部署在 Elastic Beanstalk Java 环境上的 Spring Boot 应用程序返回 502

问题描述 投票:0回答:5

我尝试使用 AWS 的 Java 配置(而不是 Tomcat 配置)在 AWS Elastic Beanstalk 上部署一个非常简单的 Spring Boot 应用程序,但我不断收到 502 错误并显示以下日志:

2016/06/10 02:00:14 [error] 4921#0: *1 connect() failed 
(111: Connection refused) while connecting to upstream, client: 38.94.153.178,   
server: , request: "GET /test HTTP/1.1", upstream:   "http://127.0.0.1:5000/test",
host: "my-single-instance-java-app.us-east-1.elasticbeanstalk.com"

我尝试通过 Spring 的 application.properties 将端口设置为日志似乎想要的值(5000,使用

server.port=5000
),并验证我的应用程序在本地主机上的该端口上成功运行。

这个问题非常相似,只不过我部署的是 JAR 而不是 WAR。似乎我在配置 Nginx 方面缺少一些东西,而且我不知道如何继续。

这是我的春季申请:

@SpringBootApplication
public class MyApplication {

    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }

    @RestController
    public static class MainController {

        @RequestMapping("/test")
        public String testMethod() {
            return "Method success!";
        }
    }
}
amazon-web-services nginx spring-boot port amazon-elastic-beanstalk
5个回答
22
投票

Nginx 不知道您的 Spring Boot 应用程序正在哪个端口上运行。 通过在 application.properties 中添加“server.port=5000”或在最后一步中使用其他建议的方式,使应用程序在 Nginx 默认重定向到的端口 5000 上运行:

https://pragmaticintegrator.wordpress.com/2016/07/12/run-your-spring-boot-application-on-aws-using-elastic-beanstalk/


7
投票

根据您发送给我的问题描述和安全组设置,您的 EC2 实例的唯一入站端口 80 已通过防火墙向世界开放,并且您的应用程序使用端口 5000。因此,使用我给您的安全规则,它也为您的 EC2 实例打开入站端口 5000,以便您的应用程序开始工作而不会出现上述错误。


1
投票

如果有人在设置 server.port=5000 后仍然遇到这样的错误。 如果您有数据库连接,您可以执行以下操作:

  1. 在仪表板的配置部分,转到 RDS 部分并创建一个远程数据库。记住形成的数据库的用户名、密码。

  2. 在软件部分,添加以下属性:

SPRING_DATASOURCE_URL=jdbc:mysql://(your-db-url)/ebdb

SPRING_DATASOURCE_USERNAME=(用户名)

SPRING_DATASOURCE_PASSWORD=(密码)

SPRING_JPA_HIBERNATE_DDL_AUTO=更新

SPRING_JPA_DATABASE_PLATFORM=org.hibernate.dialect.MySQL5Dialect


1
投票

读取 eb-engine.log 以及 nginx/error.log 后,默认 nginx 端口为 5000,而 spring-boot 的默认端口为 8080。

我们可以使用 setenv cmd 通过 elastic beanstalk CLI 更新我们的应用程序。

eb setenv SERVER_PORT=5000

我们可以通过 application.properties 在代码中更新它

server.port=5000

1
投票

这些步骤对我有用,

  1. 转到 > 环境 > 选择您的环境,
  2. 选择左侧的“配置”
  3. 点击软件的“编辑”
  4. 向下滚动到“环境属性”
  5. 再添加一个条目SERVER_PORT并设置一些数字,我设置了5000(根据Neil McGuigan的评论,现在更改为PORT,检查一下)

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.