nginx last 和break redirect 和 permanent


一.last & break

    (1)last 和 break 當出現在location 之外時,兩者的作用是一致的沒有任何差異。

注意一點就是,他們會跳過所有的在他們之后的rewrite 模塊中的指令,去選擇自己匹配的location

    (2)last 和 break 當出現在location 內部時,兩者就存在了差異

       last: 使用了last 指令,rewrite 后會跳出location 作用域,重新開始再走一次剛剛的行為

       break: 使用了break 指令,rewrite后不會跳出location 作用域。它的生命也在這個location中終結。

    網友解釋通俗易懂:

    last:
        重新將rewrite后的地址在server標簽中執行
    break:
        將rewrite后的地址在當前location標簽中執行
  nginx官方解釋:
  last:
         stops processing the current set of ngx_http_rewrite_module directives followed by a search for a new location matching     
         the changed URI;
  break:
        stops processing the current set of ngx_http_rewrite_module directives;

二、permanent & redirect:

    permanent: 永久性重定向。請求日志中的狀態碼為301

    redirect:臨時重定向。請求日志中的狀態碼為302

    從實現功能的角度上去看,permanent 和 redirect 是一樣的。不存在好壞。也不存在什么性能上的問題。但是對seo會有影響,這里要根據需要做出選擇

    在 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次。

 

注意:配置last 在跨域的時候效果和redirect一致,都是返回302狀態碼,請求地址也發生改變

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM