nginx location匹配優先順序 個人總結

2021-09-12 08:36:32 字數 884 閱讀 9442

看了下網上的各種關於location優先順序的文章,總感覺沒有講清楚。所以希望寫一篇博文,抓住乙個人對事物理解由淺入深的規律,來把這個規則說明清楚。

首先是一些概念

1.全等匹配:

location = /static/img/
2.普通匹配:

location /static/img/ 

# 匹配到此型別時,終止後續的正則匹配(後面會有詳細分析)

location ^~ /static/img/

3.正則匹配:

#正則不區分大小寫

location ~* /static/img/

#正則區分大小寫

location ~ /static/img/

4.普通匹配和正則匹配之間的匹配關係說明:

nginx會先進行普通匹配,再進行正則匹配;

普通匹配時,nginx會遍歷所有的普通匹配項,按照最長匹配原則找到一條最滿足的匹配項;

正則匹配時,如果匹配到了一條正則匹配項,則直接返回,不進行後續的正則匹配(正則消耗大,考慮到匹配效率吧);

步驟詳細說明:

1.匹配到全等匹配時,終止後續所有匹配,直接返回;

2.步驟一未匹配上時,然後遍歷所有的普通匹配,按照最長匹配原則找到最滿足的匹配項,

如果匹配項前面有^~符號,則終止後續正則匹配,採用該匹配項;反之則繼續後續的正則匹配

3.步驟一二都未匹配上時,此時進行正則匹配,找到第乙個滿足的正則匹配項,直接返回,若都不滿足,則返回步驟二中的最長匹配項

(所以說正則匹配和loaction的順序有關係)

nginx location匹配規則

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

nginx location匹配規則

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

nginx location匹配規則

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