502错误的网关Elastic Beanstalk Spring Boot

时间:2019-02-10 03:04:23

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

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

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

3 个答案:

答案 0 :(得分:7)

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

默认 Nginx 配置

Default Nginx Configuration

预期的 Nginx 配置

Expected Nginx Configuration

  1. 这可以通过使用名为 PORT 的环境属性并将其指向 8080 来解决 转到配置>环境属性并添加属性 enter image description here

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

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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