502 错误网关 Elastic Beanstalk Spring Boot

A.D*_*Dev 6 java spring amazon-web-services spring-boot amazon-elastic-beanstalk

我在 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 的文档。

A.D*_*Dev 12

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


Suj*_*the 9

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

默认 Nginx 配置

默认 Nginx 配置

预期的 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。