精准匹配用=修饰符,只响应完全一致的uri请求:location=/login{return200"loginpage";}✅匹配/login和/login?next=/home,❌不匹配/login/、/login.html或/mylogin;优先级最高,命中即终止后续所有location查找。

精准匹配用 = 修饰符,只响应完全一致的 URI 请求,不带查询参数也不影响匹配,但路径末尾多一个 / 或少一个字符都不算匹配。
怎么写
在 location 后紧跟 =,再跟完整路径,中间不能有空格:
location = /login {
return 200 "Login page";
}
它匹配什么
- ✅
/login→ 匹配 - ✅
/login?next=/home→ 匹配(查询参数被忽略) - ❌
/login/→ 不匹配(多了斜杠) - ❌
/login.html→ 不匹配(多了扩展名) - ❌
/mylogin→ 不匹配(前缀相同但不等长)
为什么优先级最高
Nginx 一找到 = 匹配就立刻执行、停止后续所有 location 查找。哪怕配置文件里后面写了更“具体”的正则或前缀规则,也完全不生效。
常见用法场景
- 静态入口页:
location = / { proxy_pass http://app; } - 关键接口兜底:
location = /health { return 200 "OK"; } - 阻止敏感路径访问:
location = /wp-config.php { return 404; } - 避免歧义:比如
/api是接口前缀,而/api本身需单独返回文档,就用= /api明确区分
不复杂但容易忽略:只要路径不完全相等,就跳过;它不参与最长前缀比较,也不和正则竞争——它是唯一“非此即彼”的匹配方式。











