AWS 2차도메인에서 1차도메인으로 리다이렉트(리디렉션)를 어떻게 할까요?
- 2차도메인을 사용하여 서비스를 운영하다가, 2차도메인 사용을 중지할 때가 있습니다.
- 그럴때 2차도메인을 route 53에서 지워버리면 실제 서비스 운영하고있는 사이트에 접속이 끊기게 됩니다.
- 이를 방지하기위해 2차도메인은 route53에서 지우지 않되 1차도메인으로 리다이렉트 하는 방법을 탐구해봅니다.
- 상황 : 2차도메인, 본 도메인 둘 다 route 53에서 같은 elb를 바라보고 있다고 가정합니다.
- aws elb란? Elastic Load Balancing을 뜻하며 AWS ELB는 보통 AWS의 로드밸런서를 뜻합니다.
- AWS ELB는 보통 ALB(Application Load Balancer), NLB(Network Load Balancer), CLB(Classic Load Balancer)로 구성되어 있습니다.
- 이 구성은 OSI 7 Layer를 기반으로하며 ALB는 L7스위치( 애플리케이션 부분)에 해당합니다. NLB는 L4 스위치(네트워크 부분)에 해당하며 CLB는 L4와 L7 모두에서 작동하는 범용성이 있어 다루기 용이합니다. 이 부분은 나중에 자세히 공부하여 포스팅하도록 하겠습니다.
1. ALB를 사용하여 본 도메인으로 리디렉션 처리하기
- ALB(Application Load Blancer) 서비스는 HTTP에서 HTTPS로의 리디렉션은 당연하고, 도메인 이름의 리디렉션을 지원합니다.
- ALB를 가리키는 도메인이 있는 경우에는 Amazon S3(단순 스토리지 서비스) 대신 ALB를 사용하여 리디렉션을 구성합니다.
- 참고로 두 두메인이 동일한 ALB를 가리키는 경우 아래를 확인해야 합니다.
- 별도의 인증서를 보유하고 있는지 혹은 SAN(주체 대체 이름)인증서를 사용하여 도메인 유효성을 검사합니다.
- Amazon EC2 콘솔을 엽니다.
- 좌측 탐색창의 로드밸런싱 > 로드 밸런서를 선택합니다.
- 로드 밸런서를 선택한 다음 리스너를 선택합니다.
- 사용할 로드 밸런서 리스너에 대한 규칙 보기/편집을 선택합니다.
- 규칙 추가 아이콘(더하기 기호)을 선택합니다.
- 규칙 삽입을 선택합니다.
- 조건 추가를 선택합니다.
- 조건 섹션 (IF) 에서 조건 추가를 선택합니다.
호스트 헤더를 선택한 다음 호스트명 (예: example.com) 을 입력합니다.
저장하려면 checkmark 아이콘을 선택합니다. - 작업 섹션 (THEN)에서 작업 추가를 선택합니다.
리디렉션을 선택합니다.
사용 사례에 따라 프로토콜과 포트를 지정합니다.
기존 호스트, 경로, 쿼리를 사용자 지정 호스트, 경로, 쿼리로 변경합니다.
호스트에 example2.com을 입력합니다.
경로 및 쿼리는 기본값을 유지합니다 (사용 사례에서 변경해야 하는 경우가 아니라면).
응답을 HTTP 301 "Permanently moved" 또는 HTTP 302 "Found"로 설정하십시오.
저장하려면 checkmark 아이콘을 선택합니다.
이제 다음 섹션이 나타납니다.
https://example2.com:443/#{path}?#{query}로 리디렉션하시겠습니까?
상태 코드: HTTP_301 - 저장을 선택합니다.
2. S3를 사용하여 본 도메인으로 리디렉션 처리하기
- 사전에 아래의 사항을 숙지합니다.
- Route 53에 호스팅되는 test.com 도메인에 대한 호스팅 영역이 존재해야 합니다.
- test.com의 호스팅 영역에 리소스 레코드를 추가할 수 있는 권한이 있어야 합니다.
- Amazon S3(Simple Storage Service)를 생성할 수 있는 권한이 있어야 합니다.
- test.com의 정확한 이름을 사용하여 S3 버킷을 생성할 수 있습니다.
- 참고로 리디렉션의 경우 HTTPS를 통해 S3에 연결할 수 없기 때문에 사이트에서 HTTP를 사용해야 합니다.
- Amazon S3 콘솔에서 정확한 이름 example.com을 사용하여 S3 버킷을 생성합니다.
참고: S3 버킷 이름은 전역적으로 고유해야 합니다. 필요한 버킷 이름이 이미 사용 중인 경우 리디렉션을 위해 Amazon S3를 사용할 수 없습니다. 백엔드 서버에서 리디렉션을 구성하는 등의 다른 해결 방법을 고려합니다. - 방금 생성한 버킷을 선택한 후 속성(Properties)을 선택합니다. 정적 웹 사이트 호스팅(Static Website Hosting) 드롭다운 목록을 확장한 후 객체에 대한 요청 리디렉션(Redirect requests for an object)을 선택합니다.
- 호스트 이름(Host name) 필드에 example.net을 입력하고 저장(Save)을 선택합니다.
- Route 53 콘솔에서 example.com이라는 호스팅 영역을 선택합니다.
- 다음 값을 사용하여 example.com에 대한 리소스 레코드를 생성합니다.
레코드 이름(Record name): example.com
레코드 유형(Record Type): A – IPv4 address를 선택합니다.
트래픽 라우팅 대상(Route traffic to): s3 웹 사이트 엔드포인트에 대한 별칭(Alias to S3 website endpoint)을 선택합니다. - 리전(Region)을 선택하고 사용자가 생성한 S3 엔드포인트를 입력합니다.
라우팅 정책(Routing policy): 단순(Simple)을 선택합니다.
상태 대상 평가(Evaluate Health Target): 아니오(No)를 선택하고 레코드 생성(Create Records)을 선택합니다.
3. Route 53의 cname 활용하여 리디렉션 처리하기
- 가장 간단한 방법이라고 생각하지만 cname을 활용할 경우, 도메인은 그대로 2차도메인 형식이 출력됩니다.
- 주의점으로 Nginx 혹은 appache 설정값을 확인해야 합니다. 잘못하면 무한리디렉션에 걸릴 수 있습니다.
- Route53 > 호스팅 영역으로 진입합니다.
- 사용하고있는 본 도메인 이름을 클릭합니다.
- 2차도메인 레코드 부분에서 유형이 A로 되어있는걸 지웁니다.
- 레코드 생성 버튼을 클릭합니다.
- 2차도메인을 똑같이 기입한 후, 유형을 CNAME으로 지정합니다.
- 값/트래픽 라우팅 대상을 본도메인으로 지정합니다.
- 저장합니다.
마무리
ALB를 사용하여 리디렉션 하기
S3를 사용하여 리디렉션 하기
'AWS' 카테고리의 다른 글
[쉽게 따라하는 AWS] 10. Gradle - SpringBoot 프로젝트 EC2에 배포하기 (0) | 2022.07.15 |
---|---|
[쉽게 따라하는 AWS] 09. AWS EC2 인스턴스 도메인 적용하기 (0) | 2022.07.14 |
[쉽게 따라하는 AWS] 08. AWS EC2 RDS 연결, EC2에서 RDS 접근하기 (5) | 2020.04.29 |
[쉽게 따라하는 AWS] 07. AWS RDS 생성하기 (0) | 2020.04.28 |
[쉽게 따라하는 AWS] 06. AWS EC2 서버에 80포트 및 8080 포트 추가하기 (2) | 2020.04.28 |