zoukankan      html  css  js  c++  java
  • Nginx配置中last和break及permanent和redirect的区别

    一、不写last和break

    流程就是依次执行这些rewrite

    1. rewrite break - url重写后,直接使用当前资源,不再执行location里余下的语句,完成本次请求,地址栏url不变
    2. rewrite last - url重写后,马上发起一个新的请求,再次进入server块,重试location匹配,超过10次匹配不到报500错误,地址栏url不变
    3. rewrite redirect – 返回302临时重定向,地址栏显示重定向后的url,爬虫不会更新url(因为是临时)
    4. rewrite permanent – 返回301永久重定向, 地址栏显示重定向后的url,爬虫更新url
    二、使用last会对server标签重新发起请求
    1. 如果location中rewrite后是对静态资源的请求,不需要再进行其他匹配,一般要使用break或不写,直接使用当前location中的数据源,完成本次请求
    2. 如果location中rewrite后,还需要进行其他处理,如动态fastcgi请求(.PHP,.jsp)等,要用last继续发起新的请求
      (根的location使用last比较好, 因为如果有.php等fastcgi请求还要继续处理)
    3. 使用alias指定源:必须使用last
    三、last和break总结
    1. 当出现在location之外时,两者的作用是一致的没有任何差异。
      注意一点就是,他们会跳过所有在他们之后的rewrite模块中的指令,去选择自己匹配的location
      Example:
    rewrite url1 url2 last; ①
    rewrite url3 url4 last; ②
    rewrite url5 url6 last; ③
     
    location ~  url2     ④
    location ~  url4     ⑤
    location ~  url6     ⑥
    

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

    1. 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(或者是百度爬你的网站时)。 类似于这样的东西,会对你到底是永久性重定向还是临时重定向感兴趣。

  • 相关阅读:
    [转]ASP.NET Core 中间件详解及项目实战
    [转]如何在ASP.NET Core中实现一个基础的身份认证
    [转]ASP.NET Core 之 Identity 入门(三)
    [转]ASP.NET Core 之 Identity 入门(二)
    [转]ASP.NET Core 之 Identity 入门(一)
    [转]用Middleware给ASP.NET Core Web API添加自己的授权验证
    [转]NET Core中实现一个Token base的身份认证
    [转]MVC过滤器
    [转]【无私分享:ASP.NET CORE 项目实战(第九章)】创建区域Areas,添加TagHelper
    [转]国家发展改革委关于印发促进中部地区崛起“十三五”规划的通知
  • 原文地址:https://www.cnblogs.com/tongxiaoda/p/7452033.html
Copyright © 2011-2022 走看看