nginx中return和rewrite指令同時存在先執(zhí)行順序哪個
前文
如果return指令跟rewrite指令同時存在先執(zhí)行哪個呢?
場景示例
模擬數(shù)據(jù)
server {
location /images {
rewrite /images/(.*)$ /pic/$1 last;
return 200 "return 200 in /images";
}
location /pic {
rewrite /pic/(.*) /photos/$1;
return 200 "return 200 in /pic";
}
location /photos {
return 200 "return 200 in /photos";
}
}
分別在/images、/pic、/photos的location段增加return 返回200狀態(tài)碼并輸出字符串
流程
- 訪問
xxx.com/images/index.html,會進(jìn)入/images的location段中, - 在
/images中,進(jìn)行rewrite指令,將images/index.html重寫到/pic/的index.html,并且有last 值。 - 遇到
last值,會重新觸發(fā)請求。在server段找/pic的location段。 - 匹配到location的
/pic后 ,又重寫,將/pic的index.html重定向到/photos目錄下的index.html。(注意/pic段沒有加last值,意味著流程順序執(zhí)行!) - 沒有加flag標(biāo)簽。所以
/pic段中依然執(zhí)行下面的命令,會走retrun 200 "return 200 in /pic"之后就中斷。


場景2
如果在/pic段中增加flag的break,會執(zhí)行什么?

當(dāng)遇到break,會重寫找/photos段,不會執(zhí)行return 200 in /pic,

注意事項(xiàng)
如果當(dāng)你直接訪問xxx.com/photos/index.html, 但是又有return指令, 會優(yōu)先執(zhí)行return指令 , 并不會返回photos/index.html的頁面,直接返回return結(jié)果給你。
如果沒有return指令才會找目錄對應(yīng)下的有沒有index.html文件。

總結(jié)
到此這篇關(guān)于nginx中return和rewrite指令同時存在先執(zhí)行順序哪個的文章就介紹到這了,更多相關(guān)nginx中return和rewrite指令執(zhí)行順序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nginx訪問日志access_log配置及信息詳解(推薦)
當(dāng)你設(shè)置日志級別成debug,如果你在調(diào)試一個在線的高流量網(wǎng)站的話,你的錯誤日志可能會記錄每個請求的很多消息,這樣會變得毫無意義,下面小編給大家介紹Nginx訪問日志access_log配置及信息詳解,感興趣的朋友跟隨小編一起看看吧2024-04-04
Nginx?504?Gateway?Time-out的兩種最新解決方案
大家在訪問網(wǎng)站的時候通常會遇到502錯誤、404錯誤等,很少會遇到504錯誤,但是在我們?nèi)ピL問大流量或者內(nèi)容數(shù)據(jù)量較多的網(wǎng)站時,打開網(wǎng)頁偶爾就會出現(xiàn)504 gateway time-out,這篇文章主要給大家介紹了關(guān)于Nginx?504?Gateway?Time-out的兩種解決方案,需要的朋友可以參考下2022-08-08

