본문 바로가기
👾 Server/☁️AWS

서브 도메인과 AWS 서비스 연결하기 3. 로드 밸런서에 SubDomain 연결하여 HTTPS 통신하기

by kukim 2022. 9. 13.

잘못된 내용이나 의견 있다면 편하게 말씀해주세요.🙏🏻

 

시리즈

1. 이전 글 : AWS Route 53에서 Domain name(root) 구입하기

2. 이전 글 : CloudFront에 SubDomain 연결하여 HTTPS 통신하기

3. 현재 글 : 로드 밸런서에 SubDomain 연결하여 HTTPS 통신하기 

 

서비스 아키텍처 중, BE Server(초록색) 도메인

 

이전 글에서 파란색, CloudFront에 서브 도메인을 연결하여 HTTPS 통신하는 방법에 대해 알아보았습니다.

이번 글에서는 초록색, ALB에 SubDomain 연결하여 HTTPS 통신하는 방법에 대해 알아보려 합니다. 로드 밸런서는 AWS ALB를 사용합니다. (본문에서 나온 용어(RootDomain, SubDomain)들은 이전 글을 참고해주세요.)

(+a ALB란 Application Load Balancer으로 현재 백엔드 서버를 가리키고 있는 엔트리 포인트입니다. 보다 자세한 아키텍처는 프로젝트 README.md를 참고해주세요.)

 

글 순서는 아래와 같습니다.

1. ALB에서 사용할 SSL 인증서 생성 (with ACM)

2. Route 53, Root Domain 레코드에 BE Server가 사용할 SubDomain 추가

3. ALB에 인증서 등록

4. 결과

 

1. ALB에서 사용할 SSL 인증서 생성 (with ACM)

이전 글과 마찬가지로 ALB가 HTTPS 때 사용할 SSL 인증서를 생성합니다. 이전 CloudFront이 사용한 인증서는 버지니아에서 만들었지만, 현재 ALB는 서울 리전에 있기 때문에 서울 리전에서 만들도록 하겠습니다.

1.1 서울 리전 - ACM - 인증서 요청
1.2 퍼블릭 인증서 요청 - 다음
1.3 SubDomain 이름 / DNS 검증 작성 후 - 요청

SubDomain 이름은 백엔드 서버가 사용할 api.jjikmuk.com으로 생성하겠습니다.

1.4 대기중인 인증서 보기
1.5 Route 53에서 레코드 생성
1.6 api.jjikmuk.com - 레코드 생성

위 과정을 통해 ALB에서 사용할 SSL 인증서를 생성하였고, Route 53에서 인증서에 대한 레코드도 추가하였습니다.

2. Route 53, Root Domain 레코드에 BE Server가 사용할 SubDomain 추가

Root Domain 레코드에 SubDomain을 추가합니다.

2.1 레코드 이름 / 레코드 유형 / 별칭-ALB  작성 후 - 레코드 생성

레코드 이름 : api.jjikmuk.com

레코드 유형 : A

별칭 : on 

트래픽 라우팅 대상 : ALB / 서울 리전 / 해당 ALB

3. ALB에 인증서 등록

SSL 인증서도 생성하였고 Root Domain에 서브 도메인 레코드도 등록하였습니다. 이제 ALB에 인증서를 연결하여 HTTPS 통신하도록 연결하면 됩니다.

3.1 EC2 - 로드밸런서 - 리스너 추가
3.2 HTTPS-443 / Forward to / Target group

HTTPS 프로토콜과 443 포트 번호를 선택합니다. 이 뜻은 로드 밸런서(ALB)이 HTTPS/443으로 요청을 받아 actions으로 넘겨줍니다.

이제 actions 을 추가합니다. actions는 forward to으로 지정하여 ALB가 가리킬 Target group을 지정합니다. (글 예시는 ALB의 Target group은 ECS로 연결되어있습니다)

3.2 SSL 선택 - Add

생성한 SSL을 선택하고 리스너를 Add 합니다.

3.3 HTTPS: 443 리스너 생성 완료

+a) 로드 밸런서에 HTTP 요청이 왔을 때 HTTPS로 리다이렉트 할 수 있습니다.

3.4 기존 HTTP 규칙 편집
3.4 기존 규칙 편집
3.5 기존 THEN 조건 제거
3.6 작업 추가 - 리디렉션 대상
3.7 HTTPS, 443 포트 지정, 업데이트

3.4 ~ 3.7 작업을 통해 로드 밸런서에 HTTP 요청이 온다면 HTTPS으로 리다이렉트 되도록 설정하였습니다.

4. 결과

서브 도메인, HTTPS 통신 없는 ALB 도메인 연결
3.4 HTTPS 연결 완료

# curl로 http 요청 확인 -> 301 리다이렉트 확인(https)

> curl -I http://api.jjikmuk.com                                                   

HTTP/1.1 301 Moved Permanently
Server: awselb/2.0
Date: Tue, 13 Sep 2022 11:06:06 GMT
Content-Type: text/html
Content-Length: 134
Connection: keep-alive
Location: https://api.jjikmuk.com:443/

마치며

이번 글을 끝으로 로드밸런서에 SubDomain을 연결하여 HTTPS 통신하는 방법까지 알아보았습니다.

읽어주셔서 감사합니다. 🙇‍♂️


⛓ Reference

 

서브 도메인을 활용하여 AWS 서비스에 연결하기 1. Route 53에서 도메인 네임 구입 방법

서브 도메인을 활용하여 AWS 서비스에 연결하기 2. CloudFront에 SubDomain 연결하여 HTTPS 통신하기

사이드 프로젝트 아키텍처 (Readme.md)

 

 

 

댓글