1. 程式人生 > >Nginx多個location匹配

Nginx多個location匹配

localhost 效果 匹配 處理請求 順序 通用 static cal htm

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

首先匹配 =
其次匹配 ^~
其次是按文件中順序的正則匹配
最後是交給 / 通用匹配
當有匹配成功時候,停止匹配,按當前匹配規則處理請求

例子,有如下匹配規則:

location = / {
#規則A
}
location = /login {
#規則B
}
location ^~ /static/ {
#規則C
}
location ~ .(gif|jpg|png|js|css)$ {
#規則D
}
location ~* .png$ {
#規則E
}
location / {
#規則F
}

那麽產生的效果如下:

訪問根目錄 /, 比如 http://localhost/ 將匹配規則 A
訪問 http://localhost/login 將匹配規則 B,http://localhost/register 則匹配規則 F
訪問 http://localhost/static/a.html 將匹配規則 C
訪問 http://localhost/a.gif, http://localhost/b.jpg 將匹配規則 D 和規則 E,但是規則 D 順序優先,規則 E 不起作用,而 http://localhost/static/c.png 則優先匹配到規則 C
訪問 http://localhost/a.PNG 則匹配規則 E,而不會匹配規則 D,因為規則 E 不區分大小寫。

訪問 http://localhost/category/id/1111 則最終匹配到規則 F,因為以上規則都不匹配

Nginx多個location匹配