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 從上向下正則順序,匹配在最後...