在 AWS Elastic Beanstalk 上部署 Spring Boot 应用程序 — 出现 502 错误
Posted
技术标签:
【中文标题】在 AWS Elastic Beanstalk 上部署 Spring Boot 应用程序 — 出现 502 错误【英文标题】:Deploying Spring Boot app on AWS Elastic Beanstalk — getting 502 error 【发布时间】:2019-09-25 14:17:29 【问题描述】:我知道,这里有很多这样的问题和答案,但没有一个对我有帮助。我尝试在 AWS Elastic Beanstalk 上安装我的简单 Spring Boot 应用程序。有一个限制:它必须使用.jsp
模板,所以它是.war
,而不是.jar
。如果我在 Elastic Beanstalk 上使用预定义的 Tomcat 环境,一切正常,但我的目标是使用 Java 环境。
当我安装我的应用程序时,它的状态是Degraded
,当我尝试访问该 url 时我变成了 502。
本地一切都很完美。
我将application.properties
中的端口更改为5000,但没有帮助。我找到了一个建议,为 TCP Port 5000 "0.0.0.0/32"
使用入站安全规则,但它没有帮助。
这是我的pom.xml
依赖项:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.eclipse.jdt.core.compiler</groupId>
<artifactId>ecj</artifactId>
<version>4.6.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
application.properties:
spring.mvc.view.prefix=/WEB-INF/view/
spring.mvc.view.suffix=.jsp
server.port=5000
Java 主类:
@SpringBootApplication
public class DemowebApplication extends SpringBootServletInitializer
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application)
return application.sources(DemowebApplication.class);
public static void main(String[] args)
SpringApplication.run(DemowebApplication.class, args);
AWS 错误日志:
2019/05/07 21:04:45 [error] 7827#0: *19 connect() failed (111: Connection refused) while connecting to upstream, client: 91.232.158.8, server: , request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:5000/", host: "my-endpoint-tst.us-east-2.elasticbeanstalk.com"
2019/05/07 21:04:46 [error] 7827#0: *19 connect() failed (111: Connection refused) while connecting to upstream, client: 91.232.158.8, server: , request: "GET /favicon.ico HTTP/1.1", upstream: "http://127.0.0.1:5000/favicon.ico", host: "my-endpoint-tst.us-east-2.elasticbeanstalk.com", referrer: "my-endpoint-tst.us-east-2.elasticbeanstalk.com/"
我怀疑问题出在我的 Tomcat 配置上,但我对它的所有实验都没有帮助。
【问题讨论】:
***.com/questions/37755765/… 这可能是您的安全组的问题。请打开端口 5000 的入站规则。 是的,我看到了该建议并做到了,但 id 没有帮助:Custom TCP Rule TCP 5000 0.0.0.0/32
能否请您选择 HTTP 80 0.0.0.0/0 和 ::/0 并尝试一下。
它没有帮助(
【参考方案1】:
我也有类似的问题。我会将 JAR 加载到 Elastic Beanstalk 中,当我尝试访问 URL 时,我会收到 502 Apache 错误和降级状态。在本地,我设置为端口 8080,但是当我尝试通过我的 URL 访问它时,我得到了 502。我的问题是:
1) 当我导出它时,我没有从我的 IDE 导出和上传胖 .JAR 文件。我知道您说过您不能使用 .JAR,但只要确保在导出项目时,您还使用它从 Maven 导出所有依赖项。
2)这可能比这个答案的第一部分有更大的帮助,但即使我将我的端口放在 application.properties 中,它也没有拉到 Elastic Beanstalk 实例。我最终成功解决这个问题的方法是进入 AWS 的管理控制台,进入我的 Beanstalk 实例,然后进入配置选项卡。
在配置选项卡上有一个软件部分,在该子部分中,转到环境属性。在环境属性的名称部分,输入SERVER_PORT
,对于值部分,输入5000
。单击应用并让实例重新启动。
【讨论】:
以上是关于在 AWS Elastic Beanstalk 上部署 Spring Boot 应用程序 — 出现 502 错误的主要内容,如果未能解决你的问题,请参考以下文章
在 AWS Elastic Beanstalk 上扩展 Magento
如何在 AWS Elastic Beanstalk 上设置 HTTPS
如何在 AWS Elastic Beanstalk 上设置 HTTPS
在 AWS Elastic Beanstalk 上运行节点和反应