nginx location匹配規則

2021-06-14 21:40:47 字數 1858 閱讀 1414

location匹配命令

~      #波浪線表示執行乙個正則匹配,區分大小寫

~*    #表示執行乙個正則匹配,不區分大小寫

^~    # ^~表示普通字元匹配,不使用正規表示式,如果該選項匹配,只匹配該選項,不匹配別的選項,一般用來匹配目錄

=      #進行普通字元精確匹配

@     #"@" 定義乙個命名的 location,使用在內部定向時,例如 error_page, try_files

location 優先順序官方文件

directives with the = prefix that match the query exactly. if found, searching stops.

all remaining directives with conventional strings, longest match first. if this match used the ^~ prefix, searching stops.

regular expressions, in order of definition in the configuration file.

if #3 yielded a match, that result is used. else the match from #2 is used.

=字首的指令嚴格匹配這個查詢。如果找到,停止搜尋。

所有剩下的常規字串,最長的匹配。如果這個匹配使用^〜字首,搜尋停止。

正規表示式,在配置檔案中定義的順序。

如果第3條規則產生匹配的話,結果被使用。否則,如同從第2條規則被使用。

例如#通用匹配

location  = /

location  /

#精確匹配

請求uri例子:

/ -> 符合configuration a

/documents/document.html -> 符合configuration b

/images/1.gif -> 符合configuration c

/documents/1.jpg ->符合 configuration d 

@location 例子

= : 表示精確的uri匹配(有興趣的同學可以看一下url和uri的區別)

~: 表示區分大小寫的正則匹配

~*:表示不區分大小寫的正則匹配

!~ && !~*:表示區分大小寫不匹配的正則和不區分大小寫的不匹配的正則

/:通用匹配,任何請求都會匹配到

location匹配測試只使用請求uri的部分,而不使用引數部分。(原因:引數的寫法太多,無法精確匹配)

多個location配置的前提下,location的匹配順序(未驗證,嘿嘿,google上搜的)

1.首先匹配=

2.其次匹配^~

3.再其次按照配置檔案的順序進行正則匹配、

4.最後是交給/進行通用匹配

注意:

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

總結一句話: 「正則 location 匹配讓步普通 location 的嚴格精確匹配結果;但覆蓋普通 location 的最大字首匹配結果」

nginx location匹配規則

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

nginx location匹配規則

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

nginx location 匹配順序

location匹配的原型是這樣的 location uri 是精確匹配 是命名的location,在正常的location匹配中不會使用,僅僅在內部跳轉中才會使用到。是區分大小寫的匹配 是不區分大小寫的匹配 表示中止正則匹配 這個平時沒太注意 在乙個請求中,匹配的順序是這樣的。先使用所有locat...