欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Nginx配置的rewrite編寫時last與break的區(qū)別分析

 更新時間:2016年01月06日 17:22:40   作者:moon  
這篇文章主要介紹了Nginx配置的rewrite編寫時last與break的區(qū)別分析,簡單來說使用last會對server標(biāo)簽重新發(fā)起請求,而break就直接使用當(dāng)前的location中的數(shù)據(jù)源來訪問,需要的朋友可以參考下

在使用nginx配置rewrite中經(jīng)常會遇到有的地方用last并不能工作,換成break就可以,其中的原理是對于根目錄的理解有所區(qū)別,按我的測試結(jié)果大致是這樣的。

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結(jié)果有所區(qū)別
3、使用alias指定源:必須使用last
其中區(qū)別主要在proxy_pass這個標(biāo)簽上,再看看幾個測試結(jié)果:

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

在這段配置里,使用last訪問是可以訪問到東西的,不過,它出來的結(jié)果是:/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會重新發(fā)起請求匹配,所以造成了一個死循環(huán),使用break就可以訪問到http://test/a/1.html。
所以,使用last會對server標(biāo)簽重新發(fā)起請求,而break就直接使用當(dāng)前的location中的數(shù)據(jù)源來訪問,要視情況加以使用。一般在非根的location中配置rewrite,都是用的break;而根的location使用last比較好,因為如果配置了fastcgi或代理訪問jsp文件的話,在根location下用break是訪問不到。測試到rewrite有問題的時候,也不妨把這兩者換換試試。
至于使用alias時為什么必須用last,估計是nginx本身就限定了的,怎么嘗試break都不能成功。

所以我們再來理解last與break的區(qū)別:
last: 停止當(dāng)前這個請求,并根據(jù)rewrite匹配的規(guī)則重新發(fā)起一個請求。新請求又從第一階段開始執(zhí)行…
break:相對last,break并不會重新發(fā)起一個請求,只是跳過當(dāng)前的rewrite階段,并執(zhí)行本請求后續(xù)的執(zhí)行階段…
 
我們再來看一個例子:

server {
  listen 80 default_server;
  server_name dcshi.com;
  root www;

  location /break/ {
    rewrite ^/break/(.*) /test/$1 break;
    echo "break page";
  } 

  location /last/ {
     rewrite ^/last/(.*) /test/$1 last;
     echo "last page";
  }  

  location /test/ {
    echo "test page";
  }
}

 

請求:http://dcshi.com/break/***
輸出: break page
分析:正如上面討論所說,break是跳過當(dāng)前請求的rewrite階段,并繼續(xù)執(zhí)行本請求的其他階段,很明顯,對于/foo 對應(yīng)的content階段的輸出為 echo “break page”; (content階段,可以簡單理解為產(chǎn)生數(shù)據(jù)輸出的階段,如返回靜態(tài)頁面內(nèi)容也是在content階段;echo指令也是運行在content階段,一般情況下content階段只能對應(yīng)一個輸出指令,如同一個location配置兩個echo,最終只會有一個echo指令被執(zhí)行);當(dāng)然如果你把/break/里的echo 指令注釋,然后再次訪問/break/xx會報404,這也跟我們預(yù)期一樣:雖然/break/xx被重定向到/test/xx,但是break指令不會重新開啟一個新的請求繼續(xù)匹配,所以nginx是不會匹配到下面的/test/這個location;在echo指令被注釋的情況下,/break/ 這location里只能執(zhí)行nginx默認(rèn)的content指令,即嘗試找/test/xx這個html頁面并輸出起內(nèi)容,事實上,這個頁面不存在,所以會報404的錯誤。

您可能感興趣的文章:

相關(guān)文章

  • 詳解nginx中的日志配置

    詳解nginx中的日志配置

    日志對于統(tǒng)計排錯來說非常有利的,本文為大家總結(jié)了nginx日志相關(guān)的配置如access_log、log_format、open_log_file_cache等內(nèi)容,感興趣的小伙伴可以了解下
    2023-08-08
  • Nginx中accept鎖的機制與實現(xiàn)詳解

    Nginx中accept鎖的機制與實現(xiàn)詳解

    這篇文章主要給大家介紹了關(guān)于Nginx中accept鎖的機制與實現(xiàn)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • Windows?安裝?nginx?部署教程

    Windows?安裝?nginx?部署教程

    這篇文章主要介紹了Windows安裝nginx部署,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • Nginx配置檢測服務(wù)狀態(tài)的實現(xiàn)方法

    Nginx配置檢測服務(wù)狀態(tài)的實現(xiàn)方法

    這篇文章主要介紹了Nginx配置檢測服務(wù)狀態(tài)的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Nginx配置同一個域名同時支持http與https兩種方式訪問實現(xiàn)

    Nginx配置同一個域名同時支持http與https兩種方式訪問實現(xiàn)

    這篇文章主要介紹了Nginx配置同一個域名同時支持http與https兩種方式訪問實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • uwsgi+nginx代理Django無法訪問靜態(tài)資源的解決

    uwsgi+nginx代理Django無法訪問靜態(tài)資源的解決

    這篇文章主要介紹了uwsgi+nginx代理Django無法訪問靜態(tài)資源,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • Nginx處理請求時的匹配規(guī)則詳析

    Nginx處理請求時的匹配規(guī)則詳析

    這篇文章主要給大家介紹了關(guān)于Nginx處理請求時的匹配規(guī)則的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Nginx具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • 基于Nginx 反向代理獲取真實IP的問題詳解

    基于Nginx 反向代理獲取真實IP的問題詳解

    下面小編就為大家分享一篇基于Nginx 反向代理獲取真實IP的問題詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • Nginx SSI指令配置詳解

    Nginx SSI指令配置詳解

    這篇文章主要介紹了Nginx SSI指令配置詳解,本文講解了什么是SSI、為什么要用SSI、nginx配置SSI、頁面上配置、配置示例等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • nginx使用內(nèi)置模塊配置限速限流的方法實例

    nginx使用內(nèi)置模塊配置限速限流的方法實例

    Nginx現(xiàn)在已經(jīng)是最火的負(fù)載均衡之一,在流量陡增的互聯(lián)網(wǎng)面前,接口限流也是很有必要的,尤其是針對高并發(fā)的場景,下面這篇文章主要給大家介紹了關(guān)于nginx使用內(nèi)置模塊配置限速限流的相關(guān)資料,需要的朋友可以參考下
    2022-05-05

最新評論