ec2 스프링 https 적용 (feat. 도메인 적용)

24.02.02 11:00 작성 조회수 201

0

안녕하세요 웹 프로젝트 진행 중 궁금한 점이 생겨 질문드립니다.

react와 spring으로 개발을 진행하였고 둘다 ci/cd 적용을 해서 배포를 해둔 상태입니다!

 

문제상황

  1. 프론트는 도메인을 구입하여 https가 적용된 상태

  2. 벡엔드는 Ec2에서 돌아가고 있어 탄력적 ip만 사용하여 http만 적용

해결방법

프론트 도메인이 xxx.com이고 도메인을 하나 더 구입하여(xxx.net) 서버가 돌고 있는 ec2와 연결해 aws acm을 사용해 https가 적용되도록 하였습니다.

궁금한 점

  1. 프로젝트가 끝난 후 찾아보니 xxx.com(프론트 도메인)에 서브 도메인을 등록하여서 백엔드 로드벨런서를 적용하면 api.xxx.com을 백엔드 도메인으로 사용이 가능한 것으로 이해했는데 맞을까요?

  2. 서브 도메인 말고 하나의 도메인으로 프론트와 백엔드를 처리하는 방법이 있을까요?

  3. 실제로 많이 사용하는 서버가 올라가져 있는 ec2에 https를 적용하는 방법은 무엇인지 궁금합니다

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.02.03

안녕하세요, 인프런 AI 인턴입니다.

  1. 네, 만약 xxx.com 도메인이 당신의 것이고 DNS 설정 권한이 있다면, 서브 도메인을 생성하여 AWS 로드 밸런서 또는 EC2 인스턴스와 연결하는 것이 가능합니다. 서브 도메인을 만들고 적절한 레코드(A 레코드나 CNAME 레코드 등)로 AWS 리소스를 가리키도록 설정하면 api.xxx.com을 백엔드 도메인으로 사용할 수 있습니다.

  2. 프론트엔드와 백엔드를 하나의 도메인으로 처리하려면 리버스 프록시를 설정할 수 있습니다. 예를 들어, Nginx나 Apache와 같은 웹 서버는 특정 경로(ex: /api)로 들어오는 요청을 백엔드 서버로 프록시하는 역할을 할 수 있습니다. 이러한 설정을 통해 하나의 도메인으로 모든 요청을 처리하고 내부적으로 프론트엔드와 백엔드 서버로 라우팅하는 것이 가능합니다.

  3. EC2 인스턴스에 HTTPS를 적용하려면, 먼저 SSL/TLS 인증서가 필요합니다. AWS Certificate Manager(ACM)를 사용하여 인증서를 발급받거나 Let’s Encrypt와 같은 서비스를 사용할 수 있습니다. 인증서를 받으면, EC2 인스턴스에서 실행되는 웹 서버에 이를 적용해야 합니다.

    • Apache를 사용하는 경우는 SSL 모듈과 함께 VirtualHost 설정을 수정합니다.
    • Nginx를 사용하는 경우는 SSL 설정을 server 블록에 추가합니다.
    • 또한, EC2 인스턴스 대신 AWS Elastic Load Balancing을 사용하여 SSL/TLS 인증서를 로드 밸런서에 적용할 수도 있고, EC2 인스턴스에 직접 SSL/TLS 인증서를 설치할 수도 있습니다.

추가적으로 Spring Boot 애플리케이션에 HTTPS를 적용하기 위해서는 application.propertiesapplication.yml 파일에 적절한 설정을 추가하고, Spring Security를 이용하여 보안 구성을 제공하는 것이 좋습니다. 올려주신 정보에 따르면, Spring Boot는 프록시 서버 배후에서 실행될 때 “x-forwarded-for”와 “x-forwarded-proto” 헤더를 인식하고 요청이 안전한지 여부를 결정할 수 있게 해줍니다. 자세한 내용은 Spring Boot Reference Documentation에서 확인하실 수 있습니다.