location尾部斜杠是匹配逻辑开关:/api/仅匹配以/api/开头的路径,/api匹配所有以/api开头的路径,= /api仅精确匹配/api;斜杠组合还影响proxy_pass转发行为。

location 匹配中的尾部斜杠不是格式偏好,而是匹配逻辑的开关——它直接决定 Nginx 怎么理解你要匹配的路径范围。
location /api/:只匹配以 /api/ 开头的路径
这是前缀匹配,但要求路径必须严格以 /api/ 起始,且包含末尾斜杠。
- ✅ 匹配:
/api/、/api/users、/api/v1/login - ❌ 不匹配:
/api(缺斜杠)、/apixyz(非前缀)、/API/(大小写敏感)
适合 API 网关类场景,避免误匹配类似 /apiv2 这样的路径。
location /api:匹配所有以 /api 开头的路径
这是宽松前缀匹配,只要 URI 以 /api 字符串起始就命中,不管后面有没有斜杠或是否为子路径。
- ✅ 匹配:
/api、/api/、/api/users、/apixyz、/api123 - ❌ 不匹配:
/API、/v1/api(不以/api开头)
容易引发意外匹配,调试时需特别注意——比如 /api-token 也会被这个规则捕获。
location = /api:精确匹配仅此一条路径
加等号 = 表示完全相等,只响应 GET /api 这一请求,不接受任何扩展。
- ✅ 匹配:
/api - ❌ 不匹配:
/api/、/api/users、/api?x=1(查询参数不影响匹配,但路径必须一字不差)
常用于健康检查、静态资源入口或兜底路由控制,优先级最高,会跳过其他 location 比较。
斜杠组合影响 proxy_pass 行为
location 尾部斜杠和 proxy_pass 尾部斜杠要协同设计,否则转发路径易出错:
-
location /api/ { proxy_pass http://backend/; }→ 请求/api/users转发为/users(推荐) -
location /api { proxy_pass http://backend/; }→ 请求/api转发为//(双斜杠),部分后端可能重定向或拒绝 -
location /static/ { proxy_pass http://cdn; }→/static/img.png变成/static/img.png,而/static/变成/static/,行为不一致
统一用 /xxx/ + http://host/ 组合,最清晰可控。


















