这里写自定义目录标题

  • 一、last 和 break
      • (1)、last 和 break 当出现在location 之外时,两者的作用是一致的没有任何差异。
      • (2)、last 和 break 当出现在location 内部时,两者就存在了差异。
    • 二、permanent 和 redirect:
    • 三、last 和 break VS permanent 和 redirect

一、last 和 break

(1)、last 和 break 当出现在location 之外时,两者的作用是一致的没有任何差异。

注意一点就是,他们会跳过所有的在他们之后的rewrite 模块中的指令,去选择自己匹配的location

Example:

 rewrite url1 url2 last; ①rewrite url3 url4 last; ②rewrite url5 url6 last; ③location ~  url2     ④location ~  url4     ⑤location ~  url6     ⑥

当① 这条rewrite 规则生效后,它后面的②和③ 将被跳过不做判断,而去直接选择 后面的location。

这里可能有一个疑问,那些指令输入rewrite 模块中的指令呢? 若是使用nginx本身,你就要到官网上去查询了。

但如果你使用的是tengine ,可以使用tengine -V 。会将你想要的信息列举出来。

(2)、last 和 break 当出现在location 内部时,两者就存在了差异。

last: 使用了last 指令,rewrite 后会跳出location 作用域,重新开始再走一次刚刚的行为

break: 使用了break 指令,rewrite后不会跳出location 作用域。它的生命也在这个location中 终结。

Example:

 rewrite xxx1 yyy last; ⑦rewrite xxx2 yyy last; ⑧rewrite xxx3 yyy last; ⑨rewrite xxx4 yyy last; ⑩location ~  url1{rewrite url1 url2 last; ①}location ~  url2{rewrite url3 url4 break; ②fastcgi_pass 127.0.0.1:9000;}

以上事例:

  • 第一个location 中的 rewrite 指令处理完成之后,会跳出location ,再重新判断rewrite 7 ~ 9 的规则。

  • 第二个location 中的 rewrite 指令处理完成之后,不会跳出location, 更不会重新判断rewrite 7 ~ 9 的规则。而只能将信息传递给后面的fastcgi_pass 或者proxy_pass 等指令

二、permanent 和 redirect:

  • permanent: 大家公认的信息 ,永久性重定向。请求日志中的状态码为301

  • redirect: 大家公认的信息 ,临时重定向。请求日志中的状态码为302

从实现功能的角度上去看,permanent 和 redirect 是一样的。不存在哪里好,哪里坏。也不存在什么性能上的问题。

但从SEO(或者是百度爬你的网站时)。 类似于这样的东西,会对你到底是永久性重定向还是临时重定向感兴趣。了解不到,需要深入,就google 吧。

三、last 和 break VS permanent 和 redirect

在 permanent 和 redirect 中提到了 状态码 301 和 302。 那么last 和 break 想对于的访问日志的请求状态码又是多少呢?

答案为: 200

这两类关键字,我们能够眼睛看到的差异是什么呢? 我举个例子说明吧:

当你打开一个网页,同时打开debug 模式时,会发现301 和 302 时的行为是这样的。第一个请求301 或者 302 后,浏览器重新获取了一个新的URL ,然后会对这个新的URL 重新进行访问。所以当你配置的是permanent 和 redirect ,你对一个URL 的访问请求,落到服务器上至少为2次。

而当你配置了last 或者是break 时,你最终的URL 确定下来后,不会将这个URL返回给浏览器,而是将其扔给了fastcgi_pass或者是proxy_pass指令去处理。请求一个URL ,落到服务器上的次数就为1次。

nginx的rewrite中last和break 及 permanent和redirect的介绍相关推荐

  1. Nginx 中 last、break、permanent、redirect

    2019独角兽企业重金招聘Python工程师标准>>> 一.last 和 break 1. last 和 break 当出现在location 之外时,两者的作用是一致的没有任何差异 ...

  2. 实例演示Nginx重写(Rewrite)类型last、break、redirect和permanent的区别

    本文使用之前制作的Docker容器<<Docker案例:搭建nginx服务>>演示Nginx四种重写类型的区别和效果,如果尚未构建Docker服务可参考之前的文章,或者自建Ng ...

  3. nginx rewrite中last和break的区别

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

  4. 炎炎夏日,深夜详谈nginx的配置中location和rewrite的语法规则(从入门到高手的第六步)

    前言 在生产实际中,当用户页面请求后,很多是需要自动跳转到其他特定页面,这个时候往往可以利用nginx配置中location规则或rewrite语法进行设置. Nginx提供的全局变量或自己设置的变量 ...

  5. Nginx中last和break redirect和permanent区别和联系

    参考:https://www.phpmianshi.com/?id=98 一.last & break (1)last 和 break 当出现在location 之外时,两者的作用是一致的没有 ...

  6. Nginx:rewrite指令(break,last,redirect,permanent)

    rewite指令 在 server 块下,会优先执行 rewrite 部分,然后才会去匹配 location 块.因为 server 块中 rewrite 的 break 和 last 没什么区别,执 ...

  7. Nginx的rewrite应用

    Rewrite主要的功能是实现URL重写,Nginx 的 Rewrite 规则采用 PCRE Perl 兼容正则表达式的语法进行规则匹配,如相使用 Nginx 的 Rewrite 功能,在编译 Ngi ...

  8. Nginx基础——Rewrite规则

    Rewrite规则学习记录 rewrite是nginx一个特别重要的指令,该指令可以使用正则表达式改写URI.可以指定一个或多个rewrite指令,按顺序匹配. 正则匹配规则 1~ 区分大小写匹配 2 ...

  9. nginx 的 rewrite 模块

    ngxhttprewrite_module 模块用来使用正则表达式(PCRE)改变请求的 URI,返回重定向,并有条件地选择配置. 指令执行顺序 首先顺序执行 server 块中的 rewrite 模 ...

最新文章

  1. XPath学习:轴(13)——namespace
  2. C/Cpp / #define
  3. 7.1使用Request获取HTTP请求头
  4. Struts Web应用程序开发步骤
  5. github image标签转markdown工具源代码
  6. targetFilterLifecycle的作用
  7. 打印更无缝:微软改善Win11中通用打印体验
  8. 充分释放数据价值:安全、可信6到飞起
  9. html 中加载字体太慢,前端解决中文字体加载慢的问题
  10. 如何在Python中显式释放内存?
  11. java 统计字符串中每个字符出现的次数(数组或HashMap实现)
  12. 2019年10月全国程序员工资统计,一半以上的职位5个月没招到人~
  13. 在Java中使用Rserve调用R
  14. 六键无冲和全键无冲哪个好_键盘冷知识:全键无冲到底是什么?
  15. 区块链DApp从零开始学 (二) | 超详细 DApp创建 | 发行代币token | 宠物领养
  16. 【高级微观经济学】厂商理论:生产技术与生产函数
  17. 自己动手制作C 语言编译器(8):表达式
  18. CSS3属性border-radius参数详解
  19. Echarts学习总结(一)-----柱状图
  20. 如何让绩效管理公平公正的进行

热门文章

  1. 解决vue-router报NavigationDuplicated: Avoided redundant navigation to current location: “/login“ 的问题
  2. java +Selenium 2 环境搭建
  3. android 调试驱动程序,Android驱动程序开发和调试环境配置
  4. 离线环境安装python第三方库
  5. 关于爬虫学习的一些小小记录(三)——BeautifulSoup
  6. 【已解决】 com.rabbitmq.client.ShutdownSignalException: connection error; protocol meth
  7. 纯js实现鼠标拖尾效果(好玩又简单,一学就会)
  8. From PHPBB用户手册(感觉很规范的,呵呵)
  9. VR全景电子商务增加客户体验
  10. 大数据公司宣传语 公司文化企业文化