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

AWS Elastic Beanstalk部署Spring Boot应用出现502 Bad Gateway错误如何解决

问题概述

多次遇到同类问题但现有解决方案均不生效,通过AWS Elastic Beanstalk部署Spring Boot应用时出现502 Bad Gateway nginx/1.20.0错误,日志报错信息为:

connect() failed (111: Connection refused) while connecting to upstream, client: 172.31.16.189, server: , request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:5000/"
已完成两项配置排查:

  • 代码中指定应用使用5000端口:端口配置截图
  • 环境属性中配置对应端口:环境属性配置截图
    上述配置确认无误后问题仍未解决。
错误原因分析

该报错本质是nginx无法将请求转发到上游的Spring Boot应用,除已排查的端口配置外,核心可能性有三类:

  • Spring Boot应用本身启动失败,没有实际监听5000端口
  • Spring Boot绑定的地址限制了本地nginx的访问
  • Elastic Beanstalk平台的默认代理配置与实际应用端口不匹配
解决方案

按优先级逐一排查:

  1. 确认应用实际运行状态
    登录部署的EC2实例,依次执行以下命令:
  • 查看Spring Boot进程是否存活:ps -ef | grep java
  • 查看5000端口是否处于监听状态:netstat -tunlp | grep 5000
    如果没有对应进程或端口未监听,说明应用启动失败,查看应用日志/var/log/web.stdout.log排查启动报错(常见原因:数据库连接失败、配置文件缺失、依赖冲突等,修复启动问题后即可恢复)。
  1. 检查Spring Boot绑定地址配置
    确认application配置文件中没有设置server.address=127.0.0.1,如果有该配置,直接删除或者修改为server.address=0.0.0.0,确保应用接受所有本地网卡的请求。

  2. 手动覆盖nginx代理配置
    如果你使用的是Amazon Linux 2版本的Elastic Beanstalk环境,可通过添加自定义配置强制nginx转发到5000端口:
    在项目根目录创建.platform/nginx/conf.d/elasticbeanstalk/00_application.conf文件,写入以下内容:

location / {
    proxy_pass          http://127.0.0.1:5000;
    proxy_http_version  1.1;
    proxy_set_header    Connection          $connection_upgrade;
    proxy_set_header    Upgrade             $http_upgrade;
    proxy_set_header    Host                $host;
    proxy_set_header    X-Real-IP           $remote_addr;
    proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
}

重新打包部署即可生效。

  1. 确认启动命令配置
    如果你使用的是Java SE平台的Elastic Beanstalk环境,检查项目根目录的Procfile文件,确保启动命令中指定的端口为5000,示例配置:
    web: java -jar 你的应用包名.jar --server.port=5000

内容的提问来源于stack exchange,提问作者M. Winnicki

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 03:39:02