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

Elastic Beanstalk部署Docker/Flask应用出现502 Gateway Error排查求助

问题排查方向
  • 确认Flask服务监听地址:禁止绑定固定内网IP或127.0.0.1,必须绑定0.0.0.0才能让容器外的进程访问到服务。如果是直接用Flask自带服务器,启动代码需调整为app.run(host='0.0.0.0', port=5000);如果用Gunicorn等WSGI服务器,启动参数需添加--bind 0.0.0.0:5000。
  • 核对端口映射配置:
    单容器Docker环境需在Dockerrun.aws.json中明确配置端口映射,参考示例:
    {
      "AWSEBDockerrunVersion": "1",
      "Ports": [
        {
          "ContainerPort": 5000,
          "HostPort": 80
        }
      ]
    }
    
    多容器Docker环境需在docker-compose.yml中明确映射端口为"80:5000",禁止仅写容器端口(会导致随机映射宿主端口,反向代理无法找到后端)。
  • 验证实例本地连通性:SSH登录到Elastic Beanstalk对应的EC2实例,先执行docker ps确认容器处于运行状态,再执行curl http://localhost:<映射的宿主端口>验证服务是否能正常响应。如果该请求失败,说明是容器内部服务问题;如果请求成功,说明是上层Nginx反向代理配置异常。
  • 检查Nginx错误日志:除容器日志外,查看/var/log/nginx/error.log,日志会明确标注反向代理转发失败的具体原因(连接超时/连接被拒绝、目标地址端口等),可快速定位配置问题。
  • 核对安全组规则:确认Elastic Beanstalk实例的安全组允许负载均衡的入站流量访问对应宿主端口,负载均衡安全组开放80/443端口的公网入站规则。
常见踩坑点
  • 打包zip部署包时,需保证Dockerrun.aws.json/docker-compose.yml/.ebextensions等配置文件在zip包的根目录,不要嵌套在子文件夹中,Elastic Beanstalk仅会读取根目录下的部署配置。
  • 不要使用Flask自带的开发服务器部署生产环境,建议切换为Gunicorn等生产级WSGI服务器,避免因开发服务器的限制导致访问异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 20:15:03