1. Nginx location 匹配规则的优先级(精确/前缀/正则)与常见配置错误案例?
Nginx location 匹配规则(精确/前缀/正则)的优先级是什么?常见配置错误?
- 精确匹配
=优先,其次^~前缀,然后正则,最后普通前缀 - 正则按顺序匹配,首个命中生效
- 最长前缀匹配
Nginx location 匹配优先级:① 精确匹配 location = /path 最高;② 前缀匹配 ^~(location ^~ /img)命中后不再查正则;③ 正则匹配 ~/~*(按配置顺序,首个命中生效);④ 普通前缀匹配(location /path),取最长前缀。规则:先精确,再 ^~,再正则(顺序),最后普通前缀最长。常见配置错误:正则放在普通前缀之后但被前缀抢先匹配(未用 ^~)、正则顺序错误导致命中错误 location、多个前缀重叠导致最长匹配不确定。用 location 的匹配语义需注意 = 精确、^~ 阻断正则、~ 正则。
优先级口诀是"精确 > ^~ > 正则 > 最长前缀"。正则按顺序首个命中,^~ 阻断正则,是最易出错的点。
location = /exact { ... } # 精确
location ^~ /static/ { ... } # 前缀,优先于正则
location ~ \.php$ { ... } # 正则
location / { ... } # 普通前缀兜底