nginx location模組 匹配規則

2021-07-25 15:13:54 字數 1743 閱讀 9748

location語法語法:location [=|~|~*|^~] /uri/

= --> 開頭表示精確匹配

^~ --> 開頭表示uri以某個常規字串開頭,理解為匹配url路徑即可。

nginx不對url做編碼,因此請求為/static/20%/aa,可以被規則^~ /static/ /aa匹配到(注意是空格)。

~ --> 開頭表示區分大小寫的正則匹配

~* --> 開頭表示不區分大小寫的正則匹配

!~和!~* --> 分別為區分大小寫不匹配及不區分大小寫不匹配的正則

/ --> 通用匹配,任何請求都會匹配到。

多個location配置的情況下匹配順序為:

首先匹配=,其次匹配^~, 其次是按檔案中順序的正則匹配,最後是交給 / 通用匹配。當有匹配成功時候,停止匹配,按當前匹配規則處理請求。

例子,有如下匹配規則:

location = / 

location = /login

location ^~ /static/

#http://localhost/a.gif, http://localhost/b.jpg 將匹配規則d和規則e,但是規則d順序優先,規則e不起作用,

http://localhost/a.xhtml 不會匹配規則f和規則g,

http://localhost/a.xhtml 不會匹配規則g,因為不區分大小寫。

規則f,規則g屬於排除法,符合匹配規則但是不會匹配到,所以想想看實際應用中**會用到。

location !~ \.xhtml$

location !~* \.xhtml$

訪問http://localhost/category/id/1111 最終匹配到規則h,因為以上規則都不匹配,這個時候應該是nginx**請求給後端應用伺服器,

比如fastcgi(php),tomcat(jsp),nginx作為方向**伺服器存在。

location /

所以實際使用中,個人覺得至少有三個匹配規則定義,如下:

#直接匹配**根,通過網域名稱訪問**首頁比較頻繁,使用這個會加速處理,官網如是說。

#這裡是直接**給後端應用伺服器了,也可以是乙個靜態首頁

# 第乙個必選規則

location = /

# 第二個必選規則是處理靜態檔案請求,這是nginx作為http伺服器的強項

# 有兩種配置模式,目錄匹配或字尾匹配,任選其一或搭配使用

#第三個規則就是通用規則,用來**動態請求到後端應用伺服器

#非靜態檔案請求就預設是動態請求,自己根據實際把握

#畢竟目前的一些框架的流行,帶.php,.jsp字尾的情況很少了

location /

location ^~ /outer/
關鍵在於最後的/,訪問localhost/outer/in.html,其中case a會**到tomcat:8080/in.html, 而case b會**到tomcat:8080/outer/in.html,所以務必注意了。

nginx location模組 匹配規則

location語法語法 location uri 開頭表示精確匹配 開頭表示uri以某個常規字串開頭,理解為匹配url路徑即可。nginx不對url做編碼,因此請求為 static 20 aa,可以被規則 static aa匹配到 注意是空格 開頭表示區分大小寫的正則匹配 開頭表示不區分大小寫的正...

Nginx Location 指令基礎

nginx 中的 location 指令 是nginxhttpcoremodule中重要指令。location 指令比較簡單,但卻是配置 nginx 過程中不得不去了解的。location 指令,是用來為匹配的 uri 進行配置,uri 即語法中的 uri 可以是字串或正規表示式。但如果要使用正規表...

nginx location匹配規則

location匹配命令 波浪線表示執行乙個正則匹配,區分大小寫 表示執行乙個正則匹配,不區分大小寫 表示普通字元匹配,不使用正規表示式,如果該選項匹配,只匹配該選項,不匹配別的選項,一般用來匹配目錄 進行普通字元精確匹配 定義乙個命名的 location,使用在內部定向時,例如 error pag...