Elastic Beanstalk部署Java应用访问时出现502 Proxy Error求助
嘿,我之前也踩过Elastic Beanstalk(EB)搭配Aurora MySQL的502坑,给你梳理几个排查方向,应该能帮你定位问题:
第一步:先搞定EB实例到Aurora的网络连通性
本地能连不代表EB实例能连,这是最常见的根源:
- 安全组互访检查:EB的EC2实例所在安全组,要允许**出站(outbound)到Aurora安全组的3306端口;反过来,Aurora的安全组必须允许入站(inbound)**来自EB安全组的3306请求。你本地能连大概率是自己的IP在Aurora白名单里,但EB实例的IP/安全组没加进去。
- VPC子网配置:如果Aurora部署在私有子网,EB实例要么和它在同一个VPC的私有子网(配NAT网关访问外部),要么Aurora开了公网访问(生产不建议,但可以临时测试)。另外要确认用的是Aurora的私有终端节点(如果在私有子网),别错用了公网地址。
- 直接测试连通性:通过EB控制台的SSH登录到实例,执行
telnet <aurora-endpoint> 3306或者nc -zv <aurora-endpoint> 3306,如果连不通,先把网络问题解决再说。
第二步:检查Java应用在EB上的启动状态
502很多时候是应用根本没起来,或者端口不匹配:
- 扒日志找报错:在EB控制台的「日志」选项卡下载完整日志,重点看Tomcat(或你用的应用服务器)的日志文件,比如
catalina.out,里面大概率会有数据库连接失败的堆栈、或者应用启动失败的具体原因。 - 确认应用端口:EB默认把请求转发到8080端口,如果你的应用用了其他端口(比如8090),得在EB的「配置」→「软件」→「环境属性」里加对应变量,比如Spring Boot就设
SERVER_PORT=8080;或者通过.ebextensions配置代理转发规则。 - 看实例健康状态:EB控制台「监控」里看实例是不是「严重」或「降级」,如果是,百分百是应用启动失败,先解决启动问题。
第三步:核对数据库连接配置
本地配置对不代表EB上的配置没问题:
- 环境变量别写错:别把数据库密码硬编码在代码里,EB上用环境属性存
DB_URL、DB_USER、DB_PASSWORD,仔细检查有没有拼写错误(比如端点少打了字符、密码大小写不对)。 - JDBC URL格式要对:比如
jdbc:mysql://<aurora-endpoint>:3306/<db-name>?useSSL=false&serverTimezone=UTC,EC2环境下可能需要调整参数,比如Aurora没开SSL的话useSSL必须设为false,不然会连不上。 - 数据库权限验证:确认Aurora的数据库用户允许从EB实例的IP访问,临时可以把用户权限设为
%(允许任意IP)来排除权限问题,生产环境再改回限制EB安全组。
第四步:排查代理服务器(Nginx)的问题
502是EB默认的Nginx代理收不到上游应用的响应,看看这些:
- 看Nginx日志:日志里会明确写错误原因,比如
connect() failed (111: Connection refused) while connecting to upstream,这说明Nginx连不上应用的端口,要么应用没起来,要么端口配置错了。 - 检查自定义Nginx配置:如果你用了
.ebextensions改Nginx配置,确认转发规则是不是指向了正确的应用端口。
要是还搞不定,把日志里的具体错误信息贴出来,能更快定位问题~
内容的提问来源于stack exchange,提问作者pac
相关产品推荐
相关产品推荐

