nginx location執行順序和匹配原則根據location的特點分為普通和正則兩種,執行順序和匹配規則的差異也在于此。
執行順序
nginx會優先執行普通location,不管普通location是否匹配,都會再次轉向執行正則location,一旦第一個正則location被滿足,則停止向后執行。
匹配原則
正則location的匹配優先級更高,會覆蓋掉已匹配的普通location。
正則location之間的優先級取決于執行順序,一旦前一個匹配,則停止向后搜索。
普通location之間使用最大前綴匹配原則。
普通location使用嚴格精確匹配時,一旦匹配,將不再執行后續正則location。
普通location
location /a {}
無任何前綴的普通location。
正則location
location [=|~|~*|^~|@] /uri/ { … }
“~ ”區分大小寫,“~* ”不區分大小寫。
location ~ \.html {}
location執行順序示例說明
優先匹配普通location,不管普通location是否匹配,都會再次轉向正則location,直到遇上第一個滿足條件的正則location。
location /a.js {root /var/3w/static/; expires 3h; }location ~ .*\.(js|xml|xsl|css|woff2|woff|ttf|json|ico|woff2|png|jpg|gif)$ { root /var/www/static/; e