location
官方文档
总结
文档有点多,有很多概念
- “普通 location”:以“ = ”或“ ^~ ”为前缀或者没有任何前缀的 /uri/
- “正则 location”:是以“ ~ ”或“ ~* ”为前缀的 /uri/
- ”^~”:“非正则,不需要继续正则匹配”,告诉 nginx 某条普通 location ,无论最大前缀匹配,还是严格精确匹配都终止继续搜索正则 location。
- ”=“:普通 location 不允许“最大前缀”匹配结果,必须严格等于,严格精确匹配。
- …
简单概括:先匹配普通,再匹配正则。“正则 location ”让步 “普通 location”的严格精确匹配结果;但覆盖 “普通 location ”的最大前缀匹配结果。
正则 location 与编辑顺序
location 的指令与编辑顺序无关,这句话不全对。
对于普通 location 指令,匹配规则是:最大前缀匹配(与顺序无关),如果恰好是严格精确匹配结果或者加有前缀“ ^~ ”或“ = ”(符号“ = ”只能严格匹配,不能前缀匹配),则停止搜索正则 location 。
但对于正则 location 的匹配规则是:按编辑顺序逐个匹配(与顺序有关),只要匹配上,就立即停止后面的搜索。