Nginx 配置反向代理后前端请求 404 怎么回事?

程序员美蓝 阅读 33

我用 Nginx 做了反向代理,把前端打包后的静态资源部署好了,但一调后端接口就返回 404。本地 dev 时用 proxy 配置没问题,上线后就不行了。

我的前端代码里是这样发请求的:

fetch('/api/user/profile')
  .then(res => res.json())
  .then(data => console.log(data))
  .catch(err => console.error('请求失败:', err));

Nginx 里配了 location /api {} 转发到后端服务,但好像没生效,是不是路径匹配有问题?

我来解答 赞 4 收藏
二维码
手机扫码查看
1 条解答
东方淑宁
看起来是路径匹配出了问题。首先检查你的 Nginx 配置,location /api 这个写法可能不够精确,建议改成 location /api/ { } 注意最后的斜杠。

然后在 server 块里加上这些配置来优化一下:

location /api/ {
proxy_pass http://backend_service/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}


注意 proxy_pass 后面的地址要以斜杠结尾,并且和 location 的路径保持一致。这个小细节经常被忽略,会导致请求路径不对。

另外前端代码里的 fetch 路径不用改,还是用 /api/user/profile 这样写就行。记得重启 Nginx 让配置生效。要是还404,看看后端服务是不是真的能正常响应了,有时候问题出在后端服务没起来。
点赞
2026-03-25 23:00