nginx之location匹配規則

2021-08-16 19:28:32 字數 1144 閱讀 7320

1.

概述nginx server

塊下的乙個指令,每個server塊可以包含多個location塊。

2.作用

1)  基於nginx伺服器接收到的請求字串(例如:server_name/abc),對除虛擬主機名稱(也可以是ip別名)之外的字串(例如:「/abc」)進行匹配,對特定的匹配進行處理;

2)  位址定向、資料快取和應答控制等功能都是在這部分實現;

3)  許多第三方模組的配置也是在location塊中提供功能。

3.語法結構

location [ = | ~| ~* | ^~ ] uri

1)uri

變數是待匹配的請求字串,可以是不包含正則表達的字串,也可以是包含正則的字串。為了敘述方便,約定下文中,不含正則表達的uri稱為「普通uri」,包含正則表達的uri稱為「正則uri」。

2)方括號的部分是可選項,用來改變請求字串與uri的匹配方式

a)  =

用於標準uri前,要求請求字串與uri嚴格匹配。如果已經匹配成功,就停止繼續向下搜尋並立即處理此請求

b)  ~

用於表示uri包含正規表示式,並且區分大小寫

c)  ~*

用於表示uri包含正規表示式,並且不區分大小寫

d)  ^~

用於普通uri前,要求nginx伺服器找到標識uri和請求字串匹配度最高的location,立即使用此location處理請求,而不再使用location塊中的正則uri和請求字串做匹配。當瀏覽器在傳送uri時會對一部分字元進行url編碼,比如空格被編碼為「%20」,問號被編碼為「%3f」等。^~有乙個特點就是它會對uri中的這些符號進行編碼處理。比如,如果location塊收到的uri為/html/%20/data,則當nginx伺服器搜尋到配置為「^~/html/ /data」的location時,可以匹配成功。

4.規則

/abc 和 /abc/的區別

1:普通匹配時,前者是檔案,後者是目錄,精確匹配/abc/

2:正則匹配/abc/時,/abc不匹配,正則匹配/abc時,/abc/是可以匹配出來的。

注意:(1)正則匹配可以不寫root路徑,不寫的話就是匹配任何路徑。

(2)「正則uri」讓步於「普通uri」的嚴格精確匹配結果;但覆蓋「普通uri」的最大字首結果。

nginx之location 匹配規則

語法規則location uri 模式 含義location uri 表示精確匹配,只有完全匹配上才能生效 location uri 開頭對url路徑進行字首匹配,並且在正則之前。location pattern 開頭表示區分大小寫的正則匹配 location pattern 開頭表示不區分大小寫的...

nginx學習之location塊

nginx官方文件中location塊的語法結構為 location uriuri 待匹配的字串,可以使不含正則表達的字串,如 myserver.php等 location模式 含義以 開頭 表示精準匹配,如只匹配根目錄結尾的請求,後面不能帶任何字串 以 開頭 表示uri以某個常規字串開頭,不是正則...

nginx之location匹配順序

開頭表示精確匹配 開頭表示uri以某個常規字串開頭,不是正則匹配 開頭表示區分大小寫的正則匹配 開頭表示不區分大小寫的正則匹配 通用匹配,如果沒有其它匹配,任何請求都會匹配到優先順序 location location 完整路徑 location 路徑 location 從上向下正則順序,匹配在最後...