在实际配置中,有的地方用last并不能工作,换成break就可以,其中的原理是对于根目录的理解有所区别,按我的测试结果大致是这样的。

#location / {
#proxy_pass http://test;
#alias /home/html/;
#root /home/html;
#rewrite "^/a/(.*)\.html$" /1.html last;
#}

在#location / { 配置里:

1、使用root指定源:使用last和break都可以

2、使用proxy_pass指定源:使用last和break都可以

3、使用alias指定源:必须使用last

在location /a/或使用正则的location ~ ^/a/里:

1、使用root指定源:使用last和break都可以

2、使用proxy_pass指定源:使用break和last结果有所区别

3、使用alias指定源:必须使用last

其中区别主要在proxy_pass这个标签上,再看看几个测试结果:

location / {
root /home/html;
}

location /a/ {
proxy_pass http://test;
rewrite "^/a/(.*)\.html$" /1.html last;
}

在这段配置里,使用last访问是可以访问到东西的,不过,它出来的结果是:/home/html/1.html;可我需要的是http://test/1.html?使用break就可以了。

location / {
root /home/html;
}

location /a/ {
proxy_pass http://test;
rewrite "^/a/(.*)\.html$" /a/1.html last;
}

在这段配置里,返回错误,因为last会重新发起请求匹配,所以造成了一个死循环,使用break就可以访问到http://test/a/1.html。

所 以,使用last会对server标签重新发起请求,而break就直接使用当前的location中的数据源来访问,要视情况加以使用。一般在非根的 location中配置rewrite,都是用的break;而根的location使用last比较好,因为如果配置了fastcgi或代理访问jsp 文件的话,在根location下用break是访问不到。测试到rewrite有问题的时候,也不妨把这两者换换试试。

至于使用alias时为什么必须用last,估计是nginx本身就限定了的,怎么尝试break都不能成功。

转载于:https://blog.51cto.com/zgqwork/579051

nginx rewrite中last和break的区别相关推荐

  1. nginx的rewrite中last和break 及 permanent和redirect的介绍

    这里写自定义目录标题 一.last 和 break (1).last 和 break 当出现在location 之外时,两者的作用是一致的没有任何差异. (2).last 和 break 当出现在lo ...

  2. nginx配置中root与alias的区别

    nginx指定文件路径有两种方式root和alias,这两者的用法区别,使用方法总结了下,方便大家在应用过程中,快速响应.root与alias主要区别在于nginx如何解释location后面的uri ...

  3. java中break和return的区别_java 中return和break的区别

    在java的方法中,分为带返回参数和无返回参数两种方法.在带返回参数的方法体中,需要用return来返回该参数并表示该方法体执行完毕,该方法体中return后的语句将不会被执行.在无返回参数的方法中, ...

  4. Nginx Rewrite 和正则表达式

    目录 前言 一.Nginx Rewrite介绍 1. Rewrite 跳转场景 2. Rewrite 跳转实现 3.Nginx跳转需求的实现方式 4.nginx rewrite中的正则表达式 5.re ...

  5. nginx rewrite 指令last break区别最详细的解释

    总结: rewrite 可以在 server location 块, 正则比配的时候才重写,所以多条 rewrite 顺序靠前且匹配的优先执行. break跳出rewrite阶段,不会在匹配,进入输出 ...

  6. nginx服务器中url重写rewrite参数和例子

    本文转自:http://www.cnblogs.com/cgli/archive/2011/05/16/2047920.html 最近在VPS上尝试配置安装一个网站,VPS安装了LNMP(Linux+ ...

  7. nginx rewrite规则语法(关于break和last分析得很好)

    在新主机的迁移过程中,最大的困难就是WP permalink rewrite的设置. 因为旧主机是用的Apache, 使用的是WP本身就可以更改的.htaccess,没有太大的难度.而这次在VPS上跑 ...

  8. Nginx:last 和 break 的区别

    last 和 break 的区别 1. last 和 break 当出现在location 之外时,两者的作用是一致的没有任何差异. 注意一点就是,他们会跳过所有的在他们之后的rewrite 模块中的 ...

  9. java中iscontinue意思_Java 中return、continue和break的区别

    写在前面:适合Java初学者,大神就别来了. 今天同事突然问我return和break的区别,以前觉得随口都能说出来的东西,今天突然卡了,记得模模糊糊,只能说出个大概,所以这里做一个总结,还是那句话, ...

最新文章

  1. ARTS打卡计划第四周-ALGORITHM
  2. android 禁用剪切板_Android EditText禁止复制粘贴
  3. Git忽略规则及.gitignore规则不生效的解决办法
  4. Activemq -- Spring 整合
  5. 50个常用元器件图片_盘点2020年wordpress常用的50个插件合集
  6. c#: 任务栏进度显示(TaskbarManager)
  7. tecplot批量导出图片_批量导出Excel图片,用这招,半分钟干的活别人一整天完不成...
  8. SPOJ1716 GSS3(线段树)
  9. 在Linux系统下生产者消费者,Linux线程编程之生产者消费者问题
  10. 数字签名和加密的基本原理及其区别?
  11. 什么是罗技LogitechFlow技术
  12. Python文本词频统计
  13. Vue插槽(solt)简单案例
  14. jmeter解决不同线程组之间传递参数问题
  15. mpls 跨域 optionA 配置实例
  16. python中scrapy框架项目_Python -- Scrapy 框架简单介绍(Scrapy 安装及项目创建)
  17. 射频识别(RFID)技术与ETC技术简介
  18. 计算机硕士论文解读,计算机专业硕士论文提纲范文大全 计算机专业硕士论文提纲如何写...
  19. 表格与合并之Excel如何快速合并多个表格数据
  20. 极路由X(C526A)刷Openwrt 18.06固件

热门文章

  1. 华为秘密作战计划曝光,重注研发AI芯片挑战英伟达,轮值董事长挂帅
  2. Google智能生态链的演进路径
  3. 国内首家!携程每周两天可在家“躺平”,76% 的员工主动报名
  4. 996 成福报?拼多多个别部门让员工在 “11-11-6” 和 996 中二选一
  5. 张一鸣批员工上班时聊游戏:老板好不好,看员工敢不敢怼他
  6. 动图演示:手撸堆栈的两种实现方法!
  7. 为了去重复,写了一个通用的比较容器类,可以用在需要比较的地方,且支持Lamda表达式...
  8. 浅谈微服务的来龙去脉
  9. Java Web的Maven项目中Properties文件的使用
  10. win10系统中VMware与Hyper-v不兼容