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

Ubuntu环境下Spring Boot+React+Nginx部署连接失败求助

解决Nginx反向代理Spring Boot出现502 Bad Gateway的问题

核心问题分析

你的Nginx配置将静态资源路由与API代理放在同一个location /下,逻辑冲突,且未验证后端服务的本地可达性,最终导致502错误。

分步解决方案

1. 验证后端服务的本地可达性

先在Ubuntu服务器上执行命令,测试Spring Boot后端是否能正常响应:

curl http://localhost:8000
  • 若返回后端正常响应(如API数据或默认页面),说明后端服务无问题,故障出在Nginx配置;
  • 若curl失败,检查Spring Boot是否真的在监听8000端口:
    ss -tulpn | grep 8000
    
    确保输出包含:::8000或127.0.0.1:8000,如果后端绑定的是外部IP而非localhost,需添加启动参数--server.address=0.0.0.0让其监听所有地址。

2. 修正Nginx配置文件

将静态资源与API代理拆分到不同location,避免逻辑冲突。修改/etc/nginx/sites-available/myapp.conf为:

server {
    listen 80;

    # 处理React静态资源请求
    location / {
        root /home/build;
        index index.html index.htm;
        try_files $uri $uri/ /index.html;
    }

    # 处理后端API请求(假设API前缀为/api,可根据实际路径调整)
    location /api/ {
        proxy_pass http://localhost:8000/;
        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;
    }
}
  • 注意:如果后端API没有统一前缀,需根据实际请求路径调整location规则,确保静态资源走静态路由,API请求走代理路由。

3. 检查并重启Nginx

先验证Nginx配置合法性:

sudo nginx -t

若提示test is successful,重启Nginx使配置生效:

sudo systemctl restart nginx

4. 排查防火墙(可选)

如果后端绑定的是外部IP而非localhost,检查Ubuntu防火墙是否允许8000端口:

sudo ufw status

若8000端口未开放,执行命令开放:

sudo ufw allow 8000/tcp

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 06:06:30