nginx是反向**和負載均衡的首選工具,nginx的location配置有許多細節內容在網上不容易找到資料,或者解釋不清。本文對locaiton的常見特性進行介紹。
locaiton有四中型別的匹配規則,分別為完全匹配(=)、字首普通匹配(^~)、正規表示式匹配(~或者~*)、普通匹配
規則說明
「最長」命中
^~和普通命中,都是優先使用匹配最長的結果,示例如下:
[plain] view plain
copy
location ^~ /a
location ^~ /aaa
如果url為/aaa,則上面兩個location都匹配成功,但用於location ^~ /aaa較長,所以最終會以/aaa作為root
上例中如果是普通匹配(把location的^~去掉),結果也是一樣的
規則配置proxy_pass時,可以實現url路徑的部分替換。
proxy_pass的目標位址,預設不帶/,表示只**網域名稱,url和querystring部分不會變(把請求的path拼接到proxy_pass目標網域名稱之後作為**的url)
如果在目標位址後增加/,則表示把path中location匹配成功的部分剪下掉之後再拼接到proxy_pass目標位址
比如請求 /a/b.html
[plain] view plain
copy
location /a
[plain] view plain
copy
location /a
如上兩個匹配成功後,實際**的目標url分別是
http://server/a/b.html (把/a/b.html拼接到http://server之後)
http://server/b.html (把/a/b.html的/a去掉之後,拼接到http://server/之後)
要求注意的是,對於location為正規表示式的匹配,proxy_pass的目標位址不可以帶/
比如,如下配置會報錯:
[plain] view plain
copy
location ~ /abc(.*)
正規表示式的替換
如果是正規表示式,想要實現proxy_pass的路徑替換,可以使用如下方式:
[html] view plain
copy
location ~ /abc(.*)
如上可以把(.*)所匹配的內容拼接到之後,關於$1的使用,可以參考各種程式語言的正規表示式
另一種方法是:
[html] view plain
copy
location /abc
Nginx 核心配置location匹配規則說明
location介紹 location指令是nginx中最核心的一項配置,根據預先定義的url匹配規則來接收使用者傳送的請求,根據匹配結果,將請求 到後台伺服器 非法的請求直接拒絕並返回403,404,500錯誤處理等。location指令語法 location uri 或 location nam...
nginx的location配置詳解
語法規則 location uri 開頭表示精確匹配 開頭表示uri以某個常規字串開頭,理解為匹配 url路徑即可。nginx不對url做編碼,因此請求為 static 20 aa,可以被規則 static aa匹配到 注意是空格 開頭表示區分大小寫的正則匹配 開頭表示不區分大小寫的正則匹配 和 分...
nginx的location配置詳解
語法規則 location uri 開頭表示精確匹配 開頭表示uri以某個常規字串開頭,理解為匹配 url路徑即可。nginx不對url做編碼,因此請求為 static 20 aa,可以被規則 static aa匹配到 注意是空格 開頭表示區分大小寫的正則匹配 開頭表示不區分大小寫的正則匹配 和 分...