Nginx location匹配規則及優先順序

2021-10-10 17:52:47 字數 1869 閱讀 3591

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

模式

含義location = /uri

= 表示精確匹配,只有完全匹配上才能生效

location ^~ /uri

^~ 開頭對url路徑進行字首匹配,並且在正則之前。

location ~ pattern

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

location ~* pattern

開頭表示不區分大小寫的正則匹配

location /uri

不帶任何修飾符,也表示字首匹配,但是在正則匹配之後

location /

通用匹配,任何未匹配到其它location的請求都會匹配到,相當於switch中的default

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

多個 location 配置的情況下匹配順序為(參考資料而來,還未實際驗證,試試就知道了,不必拘泥,僅供參考):

精確匹配=字首匹配^~按檔案中順序的正則匹配

匹配不帶任何修飾的字首匹配

交給/通用匹配

當有匹配成功時候,停止匹配,按當前匹配規則處理請求

注意:字首匹配,如果有包含關係時,按最大匹配原則進行匹配。比如在字首匹配:location /dir01location /dir01/dir02,如有請求http://localhost/dir01/dir02/file將最終匹配到location /dir01/dir02

nginx配置示例:

location /那麼產生的效果如下:

訪問http://localhost/category/id/111則最終匹配到規則 f ,因為以上規則都不匹配,這個時候應該是 nginx **請求給後端應用伺服器,比如 fastcgi(php),tomcat(jsp),nginx 作為反向**伺服器存在。

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

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

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

# 第乙個必選規則

location = /

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

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

location ^~ /static/

location ~* \.(gif|jpg|jpeg|png|css|js|ico)$

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

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

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

location /

nginx location匹配規則

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

nginx location匹配規則

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

nginx location匹配規則

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