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

本地Docker运行ASP.NET Core 8网站正常,AWS Elastic Beanstalk报502错误

解决Elastic Beanstalk上Docker容器502 Bad Gateway问题

你的本地Docker能正常运行但EB上出现502错误,核心原因是EB的Nginx反向代理无法连接到容器内的.NET应用,以下是具体排查和修复步骤:

1. 确保.NET应用监听8080端口

.NET 8默认监听http://localhost:5000和https://localhost:5001,但你的Dockerfile暴露了8080端口,两者不匹配导致Nginx无法连接。需要强制应用监听8080:

  • 修改Dockerfile的final阶段,添加环境变量:
    FROM base AS final
    WORKDIR /app
    # 新增这行,指定应用监听8080端口
    ENV ASPNETCORE_URLS=http://+:8080
    COPY --from=publish /app/publish .
    ENTRYPOINT ["dotnet", "myproject_web.dll"]
    

2. 配置Elastic Beanstalk的端口映射

EB默认可能把请求转发到容器的80端口,需要明确告诉它转发到8080:

  • 在项目根目录创建Dockerrun.aws.json文件,内容如下:
    {
      "AWSEBDockerrunVersion": "1",
      "Ports": [
        {
          "ContainerPort": 8080,
          "HostPort": 80
        }
      ]
    }
    
    这个文件会告诉EB将主机的80端口(对外访问端口)映射到容器的8080端口。

3. 检查日志定位问题

如果以上步骤未解决,查看EB日志确认具体原因:

  • 登录EB控制台,进入目标环境,点击左侧菜单的日志,选择请求日志或完整日志下载查看:
    • 检查Nginx日志(/var/log/nginx/error.log):确认是否存在连接容器8080失败的记录
    • 检查容器应用日志:验证.NET应用是否正常启动,有无端口监听错误

4. 本地验证容器修改

修改Dockerfile后,本地重新构建镜像并运行,确认应用确实监听8080:

docker build -t myproject .
docker run -p 8080:8080 myproject

访问http://localhost:8080确认正常后,再重新部署到EB。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 21:22:05