精确匹配使用=修饰符,优先级最高且严格匹配完整uri路径,不包含查询参数和锚点,结尾斜杠必须一致,适用于健康检查、重定向、静态文件兜底及敏感路径拦截等场景。

在 Nginx 中,精确匹配是处理特定请求最直接、最可靠的方式,适用于首页、登录页、健康检查端点等路径完全固定、不容偏差的场景。它使用 = 修饰符,优先级最高,匹配成功后立即执行,不再检查其他 location 块。
精确匹配的基本写法
语法非常简洁:
location = /path {<br> # 配置指令,如 return、proxy_pass、root 等<br>}关键点:
-
必须加
=符号,且紧挨着location,中间不能有空格 -
只匹配完整 URI 路径部分,不包含查询参数(
?key=value)和锚点(#section) - 结尾斜杠严格匹配:`location = /api` 不匹配 `/api/` 或 `/api/v1`
常见实用示例
以下配置片段可直接用于生产环境:
- 返回纯文本响应(如健康检查):
location = /health { return 200 "OK"; } - 重定向特定路径:
location = /old-login { return 301 https://example.com/login; } - 静态文件兜底(避免被其他规则覆盖):
location = /favicon.ico { alias /var/www/static/favicon.ico; } - 拦截敏感路径(安全加固):
location = /.env { return 404; }
注意事项与易错点
精确匹配看似简单,但几个细节容易导致失效:
-
不要和普通前缀匹配混用同一路由:比如同时存在
location = /admin和location /admin,前者一定生效,后者永远不会被触发 -
查询参数不影响匹配:请求
/login?from=home仍会命中location = /login -
注意大小写:Nginx 默认区分大小写,
location = /Login不匹配/login;如需忽略,需配合map或统一规范路径 -
不支持正则语法:不能写成
location = /user/\d+,那是正则匹配的范畴,应改用~











