最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

靈活應(yīng)用Nginx Rewrite:實戰(zhàn)經(jīng)驗與實用方法

2023-04-18 22:45 作者:小毛驢的爛筆頭  | 我要投稿

Nginx Rewrite順序優(yōu)先級

?
location?=)?>?(location?完整路徑)?>?(location?^~?路徑)?>?(location?~,~*?正則順序)?>?(location?部分起始路徑)?>?(/)

具體而言,當 Nginx 匹配請求 URL 時,先按照完全匹配(location =)進行匹配,然后是完整路徑匹配(location 完整路徑),接著是路徑前綴匹配(location ^~ 路徑),再然后是正則表達式匹配(location?,* 正則順序),最后是部分起始路徑匹配(location 部分起始路徑),如果都沒有匹配成功,則使用 / 作為默認匹配。

Nginx Rewrite Flag

Nginx Rewrite 指令中的 flag 用于控制重寫操作的行為,常見的 flag 有以下幾種:

last:相當于 Apache 中的 [L] 標記,表示完成重寫操作,并跳過后續(xù)的 Rewrite 指令,直接選擇下一個匹配的 location 進行處理。

break:終止當前匹配,不再執(zhí)行后續(xù)的 Rewrite 指令,并使用當前重寫后的 URL 進行請求處理。

redirect:返回 302 臨時重定向,地址欄會顯示跳轉(zhuǎn)后的 URL,對搜索引擎爬蟲來說不會更新 URL(因為是臨時重定向)。

permanent:返回 301 永久重定向,地址欄會顯示跳轉(zhuǎn)后的 URL,對搜索引擎爬蟲來說會更新 URL(因為是永久重定向)。

last 和 break 在使用上區(qū)別:

last 和 break 當出現(xiàn)在 location 塊之外時:

兩者的作用是一致的沒有任何差異,?他們會跳過所有的在他們之后的?rewrite?模塊中的指令,?去選擇自己匹配的location.
不寫lastbreak,?會優(yōu)先執(zhí)行rewrite部分,?然后才會去匹配?location?塊.?

last 和 break 當出現(xiàn)在 location 塊內(nèi)部時

?break:?url重寫后,?直接使用當前資源,?終止當前locationrewrite檢測,?而且不再進行location匹配,?完成本次請求,?地址欄url不變.?
?last:??url重寫后,?馬上發(fā)起一個新的請求,?再次進入server塊,?重試location匹配,?超過10次匹配不到報500錯誤,?地址欄url不變.?
?不寫lastbreak,?那么流程就是依次執(zhí)行這些rewrite.

例子

如下 Nginx配置,回答下面3個問題

1 當 1 這條rewrite 規(guī)則生效后, 2,3,4規(guī)則將會如何處理。

2 當 5 這個 rewrite 指令處理完成之后,將會如何處理請求。

3 第二個location 中的 rewrite(6)指令處理完成之后,將會如何處理請求。

rewrite?xxx1?yyy?last;?1
rewrite?xxx2?yyy?last;?2
rewrite?xxx3?yyy?last;?3
rewrite?xxx4?yyy?last;?4
?
location?~??url1
{
????rewrite?url1?url2?last;?5?
}
?
location?~??url2
{
????rewrite?url3?url4?break;??6
????fastcgi_pass?127.0.0.1:9000
}

當 1 這條rewrite 規(guī)則生效后, 它后面的2,3,4將被跳過不做判斷, 而去直接選擇 后面的location.

當 5 這個 rewrite 指令處理完成之后, 會跳出location, 再重新判斷rewrite 1-4 的規(guī)則.

第二個location 中的 rewrite(6)指令處理完成之后, 不會跳出location, 更不會重新判斷rewrite 1 ~ 4 的規(guī)則. 而只能將信息傳遞給后面的 fastcgi_pass 或者 proxy_pass 等指令。

Nginx請求匹配到下面的localtion會返回404嗎

location?/eoc?{
????rewrite?^?$request_uri;
????rewrite?^/eoc/(.*)$?/$1?break;
????rewrite?^/eoc?break;?
????return?404;
????proxy_pass?http://127.0.0.1:18002$uri;?
????proxy_http_version?1.1;
????add_header?Cache-Control?'public,?max-age=0';
}

根據(jù) Nginx 的請求處理過程,當執(zhí)行了 return 指令時,后續(xù)的rewrite和return指令不會執(zhí)行,而是將其扔給了 fastcgi_pass 或者是 proxy_pass 指令去處理,而不會執(zhí)行"return 404;"。因此,配置中的"return 404;"不會被執(zhí)行。


靈活應(yīng)用Nginx Rewrite:實戰(zhàn)經(jīng)驗與實用方法的評論 (共 條)

分享到微博請遵守國家法律
临夏县| 仙桃市| 贺兰县| 长兴县| 太仓市| 隆德县| 栾川县| 大渡口区| 鄂伦春自治旗| 陆丰市| 武强县| 土默特左旗| 自贡市| 红原县| 乌海市| 东方市| 砚山县| 团风县| 南华县| 广宗县| 闸北区| 开江县| 西贡区| 拉萨市| 龙胜| 乌拉特后旗| 苗栗市| 鄂伦春自治旗| 光山县| 寿宁县| 德保县| 宣恩县| 弋阳县| 五河县| 行唐县| 澄城县| 米泉市| 浏阳市| 莲花县| 麟游县| 深圳市|