Nginx中location与proxy_pass的斜杠陷阱

Nginx 里最容易踩坑的一类配置,就是:

location /testopenapi/ {
    proxy_pass http://backend/;
}

这里 locationproxy_pass 都带了尾部 /,请求转发时会发生“前缀替换”。

现象

访问:

/testopenapi/callback

后端实际收到的是:

/callback

也就是说,/testopenapi/ 这一段被替换掉了。

如果不想替换前缀

proxy_pass 末尾的 / 去掉:

location /testopenapi/ {
    proxy_pass http://backend;
}

这时访问:

/testopenapi/callback

后端收到的仍然是:

/testopenapi/callback

记忆方式

可以粗暴记成一句话:

proxy_pass 末尾带 /,更像“替换路径前缀”;不带 /,更像“保留原始路径”。

这个规则在做 API 网关、前后端联调、老接口迁移时特别常见。