nginx的location匹配順序

2022-04-08 16:54:17 字數 1108 閱讀 3304

總原則:先字首字串,再正規表示式。

不管配置檔案中的location順序怎麼寫,在匹配時,都會先

將所有字首字串拎出來,放在第一位;然後再去找所有正規表示式,作為第二位。

1、首先匹配字首字串。字首字串有以下幾種形式(舉例):

a、location = /data/ {}

b、location ^~ /data/ {}

c、location /data/ {}

2、然後匹配正規表示式。正規表示式的幾種形式(舉例):

d、location ~ \.html? {}

e、location ~* \.html? {}

a的許可權最大,一旦匹配到,立即停止,直接使用對應的location。

b的許可權次之,一旦匹配到,就不再檢查正規表示式。相當於打斷了後續。

c如果匹配到了,不會立即停止,而是會先將它儲存起來,然後繼續往下匹配。

d如果匹配到了,立即停止,直接使用對應的location;

d如果沒有匹配,繼續往下找。

e如果匹配到了,立即停止,直接使用對應的location;

e如果沒有匹配,就使用先前儲存的那個字首字串。

也就是說,location /data/ {}這種模式是等級最低的。實在匹配不到了,才勉強使用它。

前提是我們配置了a、b、c、d、e這五個location。

如果只配置了a、b、c,就沒有正則匹配什麼事了;

如果只配置了d、e,就沒有字首匹配什麼事了。

那麼什麼叫最長匹配呢?

乙個請求為:

對於/images/a.png這個uri來說,上面的2個location中,location /images/是最長匹配。雖然location /也能匹配,但不是最長的。

由於不是精確匹配,nginx此時會先將這個最長匹配儲存起來。

如果後面配置了正規表示式,那麼nginx會繼續向下匹配正規表示式。

如果後面沒有配置正規表示式,nginx就會使用剛才儲存的最長的那個字首匹配,也就是location /images/對應的地方。

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匹配到 注意是空格 開頭表示區分大小寫的正則匹配 開頭表示不區分大小寫的正則匹配 和 分...

nginx的location規則(一)

nginx的url配置是使用nginx最基本功能。nginx作為伺服器,它可以接收請求,處理請求,都是基於客戶端url訪問。掌握url的配置要了解配置的幾個指令。熟悉每個匹配模式的特點。之前對於nginx的location匹配規則,我是一塌糊塗,最近認真學了一下,稍微清晰一點了,先記錄下來,方便以後...