proxy_pass末尾斜杠决定路径处理方式:不加斜杠为原样拼接,加斜杠为前缀替换;带路径不加斜杠易致路径粘连,加斜杠则安全重写。

proxy_pass 路径末尾加不加斜杠,不是格式习惯问题,而是直接决定 Nginx 如何处理请求路径的核心开关:加斜杠表示“替换前缀”,不加斜杠表示“原样拼接”。配错一个字符,后端就收不到正确 URI,接口大面积 404。
proxy_pass 不带任何路径(如 http://backend)→ 原样拼接完整 URI
location 匹配的部分(比如 /api/)会被完整保留,Nginx 把整个原始请求路径追加到 proxy_pass 后面。
- 配置示例:location /api/ { proxy_pass http://127.0.0.1:3000; }
- 请求 /api/users → 后端收到 /api/users
- 适用场景:后端本身也部署在 /api 上下文(如 Tomcat 应用路径设为 /api)
- 风险:若后端监听根路径(/),所有请求都带 /api 前缀,必 404
proxy_pass 以斜杠结尾(如 http://backend/)→ 截断前缀,只转发剩余路径
Nginx 会把 location 完整匹配的部分(如 /api/)彻底去掉,再把剩余路径(如 /users)拼到 proxy_pass 的 / 后面。
安全更新和维护 CLI Proxy API(CPA)部署与配置。用于 CPA 镜像升级、配置变更、认证目录兼容修复、上线验证与回滚。适用于用户提到“CPA 更新/升级/配置改了/容器重建/回滚”等场景。
- 配置示例:location /api/ { proxy_pass http://127.0.0.1:3000/; }
- 请求 /api/v2/login → 后端收到 /v2/login
- 这是前后端分离项目的标准写法,适配 Spring Boot、Express 等默认跑在根路径的服务
- 注意:location 写成 /api 或 /api/ 效果一致,只要 proxy_pass 末尾有 /,前缀就被替换
proxy_pass 带路径但不以斜杠结尾(如 http://backend/v1)→ 易引发路径粘连
Nginx 会把 location 匹配部分整体替换成 /v1,但**不自动加分隔符**,导致后续路径紧贴拼接,中间无 /。
- 配置示例:location /api/ { proxy_pass http://127.0.0.1:3000/v1; }
- 请求 /api/users → 后端收到 /v1users(不是 /v1/users!)
- 这种行为极难排查,调试时看到 404 却查不到原因
- 除非明确需要粘连效果,否则应避免;推荐改用 http://backend/v1/
proxy_pass 带路径且以斜杠结尾(如 http://backend/v1/)→ 安全重写,语义清晰
前缀替换逻辑不变,但因末尾有 /,拼接更干净,层级结构明确,适合版本管理或网关路由。
- 配置示例:location /service/api/ { proxy_pass http://127.0.0.1:3000/v1/; }
- 请求 /service/api/profile → 后端收到 /v1/profile
- 适用于 API 版本升级(/v1 → /v2)、微服务统一入口等需精确控制映射的场景
- 关键点:末尾斜杠是分隔符,确保路径结构不被破坏










