HTTPS 기반 S3+CloudFront와 EC2 연결

시내·2025년 7월 27일

배포

목록 보기
4/6

해당 포스트는 React, Java Spring, MySQL을 활용한 프로젝트를 배포하는 방법 - 4
즉, HTTPS 환경에서 S3+CloudFront와 EC2를 ALB, ACM, Route 53으로 연결하는 방식에 대해 다룬다

💼 Https로 EC2 배포

물론 EC2 자체에 Nginx + Cerbot까지 붙이는 방식도 있지만 나는 ALB가 클라이언트 요청을 받을 때, HTTPS로 받고 EC2에는 HTTP로 전달하는 구조를 선택했다.


💼 구성 원리

  • 서버를 HTTPS 처리하기 위해서는 무료 SSL인 ACM을 사용하고자 한다

  • 하지만 ACM은 직접적으로 EC2에 붙일 수 없기에 Load Balancer를 활용한다

  • Application Load Balancer (ALB)를 통해서 도메인 이름으로 서버에 접근할 수 있고 또 HTTPS를 사용할 수 있다

  • 그래서 Route 53에서 도메인을 server.at-hong.shop로 설정해서 ALB의 DNS로 연결했다

  • ACM 인증서가 ALB에 연결되어 있으니 HTTPS가 작동하면서도 도메인 기반 요청 처리가 가능하다!

즉, 클라이언트
https://server.at-hong.shop
→ ALB (HTTPS)
→ EC2 (HTTP) 구조를 이룬다

💼 업데이트 된 Route 53

1. at-hong.shop

  • CloudFront에 연결된 도메인으로, 정적 파일(프론트엔드) 을 S3에 올리고, CloudFront로 CDN 배포

  • CloudFront 배포 도메인인 ~.cloudfront.net을 Route 53의 at-hong.shop A 레코드에 별칭으로 연결

👉 유저가 https://at-hong.shop으로 접근하면 CloudFront가 S3에 있는 프론트를 대신 로드!

2. server.at-hong.shop

  • 백엔드(Spring Boot 서버)를 위한 도메인

  • ALB의 DNS를 Route 53의 server.at-hong.shop A 레코드에 별칭으로 연결

  • 이 ALB는 ACM을 바인딩한 뒤, 내부적으로는 EC2로 트래픽을 전달함

👉 프론트에서 API 요청을 할 때 https://server.at-hong.shop으로 HTTPS 요청 가능

💼 ACM 발급

  • EC2가 서울 리전에 있기 때문에, ALB도 서울 리전에 둬야 함

  • ALB에서 쓸 수 있는 ACM은 동일한 리전에 있어야 하기 때문에 전 단계에서 CloudFront-S3 연동했던 것과 동일하게 서울 리전에서 ACM을 발급

  • 도메인은 server.at-hong.shop으로 두고 Route 53에서 레코드 생성

💼 대상 그룹 생성

  • 인스턴스로 설정한 뒤, 프로토콜과 포트는 서버가 실행될 포트를 입력
    ex) Spring 서버는 8080 포트를 사용했기에 8080으로 설정

  • 인스턴스 목록에서 방금 생성한 인스턴스를 체크하고 '아래 보류 중인 것으로 포함' 클릭

🚗 로드 밸런서 생성

  • Application Load Balancer 클릭하고 체계는 '인터넷 경계'로 설정

  • 네트워크 서브넷은 EC2가 위치하고 있는 리전 포함 다른 한 곳 선택

  • 보안 그룹은 현재 인스턴스가 사용중인 서버 보안 그룹으로 설정

  • 프로토콜은 HTTP, HTTPS로 대상 그룹 지정과 인증서 설정까지 한 후, 로드 밸런서 생성

  • Route 53에서 해당 로드 밸런서 위와 같이 추가

  • 추가한 후, CloudFront의 레코드 상태:

✔️ 중간 점검

  • 서버에 Https가 완벽하게 적용이 됐다!

  • 백엔드 코드에서 CORS와 클라이언트 매핑 주소 바꿔주고,
    프론트엔드 코드에서 서버와의 매핑 주소를 바꿔주니

이미지는 아직이지만, 데이터를 잘 불러온다 🥹

참고 블로그:
EC2 인스턴스에 HTTPS 및 로드밸런서 적용하기
AWS EC2 HTTPS 적용하기
ACM SSL 인증서 적용

profile
contact 📨 ksw08215@gmail.com

0개의 댓글