![](/img/trans.png)
[英]502 Bad Gateway when deploying Spring Boot application to Elastic Beanstalk
[英]Spring Boot Application deployed on Elastic Beanstalk Java environment returns 502
我正在嘗試使用 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!";
}
}
}
Nginx 不知道您的 Spring Boot 應用程序在哪個端口上運行。 通過在最后一步中將“server.port=5000”添加到 application.properties 或其他建議的方式,使應用程序在 Nginx 默認重定向到的端口 5000 上運行:
根據您向我發送的問題描述和安全組設置,您的 EC2 實例的唯一入站端口 80 已通過防火牆向全世界開放,而您的應用程序使用了端口 5000。 因此,使用我給您的安全規則,它也為您的 EC2 實例打開了入站端口 5000,因此您的應用程序開始工作時不會出現上述錯誤。
如果有人在設置 server.port=5000 后仍然收到此類錯誤。 如果您有數據庫連接,您可以執行以下操作:
在儀表板的配置部分,轉到 RDS 部分並創建一個遠程數據庫。 記住所形成的數據庫的用戶名、密碼。
在軟件部分,添加以下屬性:
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
閱讀 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.