You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx反向代理SpringBoot接口出现404错误求助

问题分析与解决方案

核心问题

你遇到的404错误来自两个关键原因:

  1. Location匹配失效:Nginx配置中location /api/带结尾斜杠,而你访问的http://localhost/api/v1路径不以/api/结尾,导致请求被路由到location /,返回404。
  2. 转发路径错误:即使匹配到/api/,你的rewrite规则会把/api/v1改写为/v1转发到SpringBoot,但SpringBoot的接口实际是/api/v1,导致后端返回404,最终Nginx返回该错误。

修复方案

方案一:直接转发完整路径(推荐)

修改Nginx的location配置,去掉不必要的rewrite,直接将/api开头的请求转发到SpringBoot:

location /api {
    proxy_pass http://localhost:8080;
    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;
}
  • 当访问http://localhost/api/v1时,Nginx会完整转发路径到http://localhost:8080/api/v1,正好匹配SpringBoot的接口。

方案二:通过路径拼接转发

如果需要保留/api/的location写法,可调整proxy_pass的路径:

location /api/ {
    proxy_pass http://localhost:8080/api/;
    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;
}
  • Nginx会自动把/api/匹配到的路径部分(如v1)拼接到http://localhost:8080/api/后,形成正确的后端请求路径。

生效步骤

修改配置后,执行以下命令重启Nginx使配置生效:

nginx -s reload

关于跨域问题

之前的跨域配置未生效是因为请求根本没转发到SpringBoot,修复转发后,SpringBoot的@CrossOrigin(origins = "*")会正常处理跨域请求。

内容的提问来源于stack exchange,提问作者therepanic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 05:12:15