匹配的順序是先匹配普通字符串,而後再匹配正則表達式。另外普通字符串匹配順序是根據配置中字符長度從長到短,也就是說使用普通字符串配置的location順序是可有可無的,反正最後nginx會根據配置的長短來進行匹配,可是須要注意的是正則表達式按照配置文件裏的順序測試。找到第一個比配的正則表達式將中止搜索。html
通常狀況下,匹配成功了普通字符串location後還會進行正則表達式location匹配。有兩種方法改變這種行爲,其一就是使用「=」前綴,這時執行的是嚴格匹配,而且匹配成功後當即中止其餘匹配,同時處理這個請求;另一種就是使用「^~」前綴,若是把這個前綴用於一個常規字符串那麼告訴nginx 若是路徑匹配那麼不測試正則表達式。nginx
location = /uri =開頭表示精確匹配,只有徹底匹配上才能生效。正則表達式
location ^~ /uri ^~ 開頭對URL路徑進行前綴匹配,而且在正則以前。瀏覽器
location ~ pattern ~開頭表示區分大小寫的正則匹配。
測試
location ~* pattern ~*開頭表示不區分大小寫的正則匹配。spa
location /uri 不帶任何修飾符,也表示前綴匹配,可是在正則匹配以後。code
location / 通用匹配,任何未匹配到其它location的請求都會匹配到,至關於switch中的default。 htm
location ^~ /helloworld { #1 return 601; } #location /helloworld { #2 # return 602; #} location ~ /helloworld { return 603; }
location /helloworld/test/ { #1 return 601; } location /helloworld/ { #2 return 602; }
location /helloworld/test/ { #1 return 601; } location ~ /helloworld { #2 return 602; } location ~ /helloworld/test { #3 return 603; }