2022-05-22 @이영훈
Load Balancer에 CloudFront를 연결하여 캐싱을 하고, Route53도 연결해 도메인을 연결한 과정을 정리합니다.
만들려고 하는 전체 그림은 다음과 같습니다.
하면서 고민했던 포인트는
1.
SSL 인증서를 2개 만드는 게 맞습니다. Load Balancer의 SSL 인증서는 Seoul 리전, CloudFront의 SSL 인증서는 N.Virginia 리전에 만듭니다.
2.
개발할 때는 CloudFront의 캐싱을 꺼놓는 게 좋습니다. Caching 정책에서 모든 header를 포함해서 캐싱을 끄고, 개발 이후에 캐싱을 적용하는 게 편합니다.
Loadbalancer 설정
Loadbalancer에 HTTP 요청은 HTTPS로 redirect를 시킵니다
HTTPS는 target group에 Forward를 시킵니다
Instance가 있는, ECS가 있는 리전과 동일한 리전에 SSL 인증서를 만들어서 인증서를 연결합니다.
Loadbalancer가 사용하는 SSL 인증서는 Seoul 리전에 있고, CloudFront가 사용하는 인증서는 N.Virginia에 있습니다. 같은 도메인에 대해서 2개의 인증서가 있습니다. 참고로 DNS 인증으로 인증한 경우에는 Route53에 동일한 CNAME으로 인증서를 인증받습니다.
Loadbalancer에 CloudFront를 연결합니다
CloudFront를 생성합니다.
Origin domain에는 Load balancer를 선택하고, origin에 접근할 프로토콜은 HTTPS only를 선택합니다.
Origin protocol policy
The origin protocol policy determines the protocol (HTTP or HTTPS) that you want CloudFront to use when connecting to the origin. You can choose the following options:
• HTTPS Only – CloudFront uses only HTTPS to access the origin.
그리고 캐싱정책은 다음과 같이 설정합니다.
•
‘redirect HTTP to HTTPS’ 로 설정하고
•
모든 HTTP method를 열어줍니다
그리고 CloudFront가 캐싱을 하지 않도록 다음과 같이 설정합니다.
서비스하면서 최적화를 위해 캐시 해야할 포인트가 있으면 그 때 업데이트 하시면 됩니다.
다음 항목들도 설정해줍니다.
Price class
•
우선 한국에서만 서비스할 것이기 때문에 비용 절감차원에서 Asia가 포함된 세 번째 옵션을 선택합니다.
Alternative domain name(CNAME)
•
서비스할 도메인 명을 적어줍니다
Custom SSL certificate
•
HTTPS(TLS 계층)를 적용하기 위해 SSL 인증서를 발급 받아서 선택해주시면 됩니다 (밑에 Request certificate 링크에 들어가시면 됩니다)
•
CloudFront에 적용을 위해서 SSL 인증서는 N.Virginia에 생성해야 합니다.
설정이 다 되었으면 생성합니다.
CloudFront를 Route53과 연결합니다
Route53에서 CloudFront의 CNAME과 동일한 도메인을 생성하고, CloudFront를 연결하면 됩니다