精确匹配(=)优先级最高,要求URI与配置路径完全一致、逐字相等,不支持正则、前缀或通配;命中即终止匹配,常用于/favicon.ico等固定路径。

精确匹配用 = 修饰符,意思是请求的 URI 必须和配置中写的路径一模一样,不多不少、不带斜杠也不少斜杠,才触发该规则。
等于号匹配的核心特点
它不支持正则、不支持前缀、不支持通配,只认“完全相等”。只要 URI 字符串和 location 后面的内容逐字一致,就命中;否则直接跳过,不参与后续匹配。
-
location = /:只响应
GET /(即根路径),不响应/index.html、//或/anything -
location = /login:只响应
/login,不响应/login/、/login?next=/home或/mylogin - 即使有其他看似更“接近”的规则(比如
location /login),只要= /login存在且 URI 完全匹配,就一定优先选它
为什么等于号优先级最高
Nginx 匹配时先扫一遍所有 = 规则,一旦发现完全匹配,立刻执行对应块,不再检查其他任何 location。这是硬性规则,不是靠顺序或长度决定的。
- 它比
^~ /login、~ /login、/login都快、都确定 - 常用于高频固定路径,比如
/favicon.ico、/robots.txt、/health等无需转发的静态资源或探针接口
容易出错的细节
注意 URI 解析是原始未解码的,且不自动处理尾部斜杠或查询参数:
-
location = /api不匹配/api/(多了一个斜杠) -
location = /test不匹配/test?x=1(带 query string) -
location = /static/css不匹配/static/css/或/static/css/main.css











