Windows Nginx部署Angular+SpringBoot应用后端无法调用的配置问题
问题排查与解决方案
核心问题定位
你当前的Nginx配置仅会转发后缀为.do的请求到后端SpringBoot服务,而前后端分离架构下的SpringBoot接口通常不会统一使用.do后缀,导致前端发起的接口请求无法匹配到反向代理规则,直接被Nginx当做静态资源请求处理,最终返回404。
解决步骤
1. 调整反向代理匹配规则
根据你的后端接口实际路径前缀修改location匹配规则,绝大多数项目后端接口会统一使用/api作为前缀,对应修改两个server块的代理配置即可:
# 4300端口对应管理端应用配置示例 server { listen 4300; # 适配所有IP/域名访问,避免仅本地可访问的问题 server_name _; location / { root html/admin; index index.html; # 新增:解决Angular前端路由刷新404问题 try_files $uri $uri/ /index.html; } # 替换原有的.do后缀匹配规则,^~表示匹配前缀为/api的所有请求 location ^~ /api/ { proxy_pass http://localhost:8900; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } # 4200端口对应主应用配置示例 server { listen 4200; server_name _; location / { root html/main; index index.html; try_files $uri $uri/ /index.html; } location ^~ /api/ { proxy_pass http://localhost:8080; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
注意:如果你的后端接口没有统一前缀,或者前缀不是
/api,请将上述配置中的/api替换为你实际的接口前缀。如果确实需要使用.do后缀匹配,请确认前端所有接口请求的后缀都是.do。
2. 修正前端接口请求路径
Angular项目打包前请将所有接口请求改为相对路径,比如请求/api/user/list,不要写绝对路径http://服务器IP:8900/api/user/list,否则请求不会走Nginx转发,会直接触发跨域限制。
3. 重载Nginx配置
修改完成后,在Nginx安装目录下打开命令行,依次执行以下命令:
- 验证配置是否正确:
nginx -t,返回success再执行下一步 - 重载配置生效:
nginx -s reload
4. 异常排查
如果修改后仍然无法访问,可查看Nginx目录下logs/error.log和logs/access.log日志,定位具体报错原因。
内容的提问来源于stack exchange,提问作者PJ Singh
相关产品推荐
相关产品推荐

