IT

Elastic Beanstalk Java 환경에 배포된 Spring Boot 애플리케이션이 502를 반환합니다.

itgroup 2023. 7. 27. 21:53
반응형

Elastic Beanstalk Java 환경에 배포된 Spring Boot 애플리케이션이 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을 배치한다는 점을 제외하면 매우 유사합니다.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는 스프링 부트 응용 프로그램이 실행 중인 포트를 알지 못합니다.application.properties 또는 마지막 단계에서 제안된 다른 방법에 "server.port=dll"을 추가하여 Nginx가 기본적으로 리디렉션하는 포트 5000에서 응용 프로그램을 실행하도록 합니다.

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

질문에 대한 설명과 보안 그룹 설정에서 EC2 인스턴스에 대한 유일한 인바운드 포트 80은 방화벽을 통해 전 세계에 개방되어 있었고 응용 프로그램에 포트 5000을 사용하고 있었습니다.그래서 제가 드린 보안 규칙을 사용하여 EC2 인스턴스에 대한 인바운드 포트 5000을 열어서 애플리케이션이 위의 오류 없이 작동하기 시작했습니다.

server.port=message를 설정한 후에도 여전히 이러한 오류가 발생하는 경우.다음은 DB 연결 시 수행할 수 있는 작업입니다.

  1. 대시보드의 구성 섹션에서 RDS 섹션으로 이동하여 원격 DB를 생성합니다.형성된 db의 사용자 이름, 암호를 기억합니다.

  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=filenate.hibernate.dialect.MySQL5 방언

eb-engine.log와 nginx/error.log를 모두 읽은 후 기본 nginx 포트는 5000인 반면 spring-boot의 기본 포트는 8080입니다.

setenv cmd를 사용하여 탄력적인 빈스택 CLI를 통해 애플리케이션을 업데이트할 수 있습니다.

eb setenv SERVER_PORT=5000

application.properties를 통해 코드에서 이를 업데이트할 수 있습니다.

server.port=5000

이 단계들은 나에게 효과가 있었습니다.

  1. 이동 > 환경 > 환경을 선택합니다.
  2. 왼쪽에서 "구성"을 선택합니다.
  3. 소프트웨어에 대해 "편집"을 클릭
  4. 아래로 스크롤하여 "환경 속성"
  5. SERVER_PORT 항목을 하나 더 추가하고 몇 개의 숫자를 설정하면, 나는 5000을 설정합니다.

enter image description here

언급URL : https://stackoverflow.com/questions/37755765/spring-boot-application-deployed-on-elastic-beanstalk-java-environment-returns-5

반응형