【问题标题】:502 bad gateway Elastic Beanstalk Spring Boot502 网关错误 Elastic Beanstalk Spring Boot
【发布时间】:2019-07-03 21:48:34
【问题描述】:

我在 AWS Elastic Beanstalk 上部署了一个 Spring Boot 应用程序。我面临 502 Bad Gateway 错误。我从日志中找不到任何有用的东西

/var/log/nginx/error.log

2019/02/10 02:12:54 [错误] 3257#0: *1 connect() 在连接到上游时失败(111:连接被拒绝),客户端:......,服务器:,请求:“ GET / HTTP/1.1”,上游:“http://127.0.0.1:5000/”,主机:“....”

我没有任何用于前端的 html 文件。我只想上传部署 api 以从 swagger ui 共享文档。

【问题讨论】:

    标签: java spring amazon-web-services spring-boot amazon-elastic-beanstalk


    【解决方案1】:

    这是因为服务器正在监听 5000,将“server.port=5000”添加到 application.properties 解决了这个问题。

    【讨论】:

    • 我的是简单的 Java Web 应用程序。根据我的开发人员,它不是 Spring Boot 应用程序。它给出了与您相同的错误。怎么解决?
    • 我将端口配置添加为 5000,但这并没有解决问题。它在我的本地机器上的 5000 端口上运行得很好
    • 也许他们改变了默认端口
    【解决方案2】:

    我的问题是我的 Java 版本与我使用 Elastic Beanstalk 运行的平台不匹配,即使我的 server.port5000 上。我的 Java 版本是 11,我的平台只有用于 Amazon Linux 的 Java 8。因此,在我的基础pom.xml 中将其更改为 8 即可修复它。

    【讨论】:

      【解决方案3】:

      这是因为应用负载均衡器默认指向 EC2 实例中 nginx 服务器的 80 端口。 nginx默认配置为将请求转发到Port 5000,而out应用服务器运行在Port 8080上。

      默认 Nginx 配置

      预期的 Nginx 配置

      1. 可以使用名为 PORT 并将其指向 8080 的环境属性来解决此问题 转到配置 > 环境属性并添加属性

      参考 AWS 文档:https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/java-se-nginx.html

      1. 解决此问题的另一个选项是将应用程序负载平衡器直接指向应用程序服务器端口(8080)而不是 nginx(80. 您可以将 8080 配置为进程端口。

      2. 解决此问题的另一种方法是使用 server.port 属性在 Spring Boot 应用程序中将端口设置为 5000。

      【讨论】:

        猜你喜欢
        • 2015-04-27
        • 2022-07-01
        • 2019-07-07
        • 2017-12-09
        • 2015-05-04
        • 1970-01-01
        • 2021-09-16
        • 2022-01-12
        • 2019-06-12
        相关资源
        最近更新 更多