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