AWS에서 도메인을 다른 도메인으로 리디렉션 하는방법에 대한 고찰

 

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(주체 대체 이름)인증서를 사용하여 도메인 유효성을 검사합니다.
  1. Amazon EC2 콘솔을 엽니다.
  2. 좌측 탐색창의 로드밸런싱 > 로드 밸런서를 선택합니다.
  3. 로드 밸런서를 선택한 다음 리스너를 선택합니다.
  4. 사용할 로드 밸런서 리스너에 대한 규칙 보기/편집을 선택합니다.
  5. 규칙 추가 아이콘(더하기 기호)을 선택합니다.
  6. 규칙 삽입을 선택합니다.
  7. 조건 추가를 선택합니다.
  8. 조건 섹션 (IF) 에서 조건 추가를 선택합니다.
    호스트 헤더를 선택한 다음 호스트명 (예: example.com) 을 입력합니다.
    저장하려면 checkmark 아이콘을 선택합니다.
  9. 작업 섹션 (THEN)에서 작업 추가를 선택합니다.
    리디렉션을 선택합니다.
    사용 사례에 따라 프로토콜과 포트를 지정합니다.
    기존 호스트, 경로, 쿼리 사용자 지정 호스트, 경로, 쿼리로 변경합니다.
    호스트 example2.com을 입력합니다.
    경로  쿼리는 기본값을 유지합니다 (사용 사례에서 변경해야 하는 경우가 아니라면).
    응답 HTTP 301 "Permanently moved" 또는 HTTP 302 "Found"로 설정하십시오.
    저장하려면 checkmark 아이콘을 선택합니다.
    이제 다음 섹션이 나타납니다.
    https://example2.com:443/#{path}?#{query}로 리디렉션하시겠습니까?
    상태 코드: HTTP_301
  10. 저장을 선택합니다.

 

 

 

 

2. S3를 사용하여 본 도메인으로 리디렉션 처리하기

  • 사전에 아래의 사항을 숙지합니다.
    • Route 53에 호스팅되는 test.com 도메인에 대한 호스팅 영역이 존재해야 합니다.
    • test.com의 호스팅 영역에 리소스 레코드를 추가할 수 있는 권한이 있어야 합니다.
    • Amazon S3(Simple Storage Service)를 생성할 수 있는 권한이 있어야 합니다.
    • test.com의 정확한 이름을 사용하여 S3 버킷을 생성할 수 있습니다.
    • 참고로 리디렉션의 경우 HTTPS를 통해 S3에 연결할 수 없기 때문에 사이트에서 HTTP를 사용해야 합니다.
  1. Amazon S3 콘솔에서 정확한 이름 example.com을 사용하여 S3 버킷을 생성합니다.
    참고: S3 버킷 이름은 전역적으로 고유해야 합니다. 필요한 버킷 이름이 이미 사용 중인 경우 리디렉션을 위해 Amazon S3를 사용할 수 없습니다. 백엔드 서버에서 리디렉션을 구성하는 등의 다른 해결 방법을 고려합니다.
  2. 방금 생성한 버킷을 선택한 후 속성(Properties)을 선택합니다. 정적 웹 사이트 호스팅(Static Website Hosting) 드롭다운 목록을 확장한 후 객체에 대한 요청 리디렉션(Redirect requests for an object)을 선택합니다.
  3. 호스트 이름(Host name) 필드에 example.net을 입력하고 저장(Save)을 선택합니다.
  4. Route 53 콘솔에서 example.com이라는 호스팅 영역을 선택합니다.
  5. 다음 값을 사용하여 example.com에 대한 리소스 레코드를 생성합니다.
    레코드 이름(Record name): example.com
    레코드 유형(Record Type): A – IPv4 address를 선택합니다.
    트래픽 라우팅 대상(Route traffic to): s3 웹 사이트 엔드포인트에 대한 별칭(Alias to S3 website endpoint)을 선택합니다.
  6. 리전(Region)을 선택하고 사용자가 생성한 S3 엔드포인트를 입력합니다.
    라우팅 정책(Routing policy): 단순(Simple)을 선택합니다.
    상태 대상 평가(Evaluate Health Target): 아니오(No)를 선택하고 레코드 생성(Create Records)을 선택합니다.

 

 

3. Route 53의 cname 활용하여 리디렉션 처리하기

  • 가장 간단한 방법이라고 생각하지만 cname을 활용할 경우, 도메인은 그대로 2차도메인 형식이 출력됩니다.
  • 주의점으로 Nginx 혹은 appache 설정값을 확인해야 합니다. 잘못하면 무한리디렉션에 걸릴 수 있습니다.
  1. Route53 > 호스팅 영역으로 진입합니다.
  2. 사용하고있는 본 도메인 이름을 클릭합니다.
  3. 2차도메인 레코드 부분에서 유형이 A로 되어있는걸 지웁니다.
  4. 레코드 생성 버튼을 클릭합니다.
  5. 2차도메인을 똑같이 기입한 후, 유형을 CNAME으로 지정합니다.
  6. 값/트래픽 라우팅 대상을 본도메인으로 지정합니다.
  7. 저장합니다.

 

 

 

 

마무리

ALB를 사용하여 리디렉션 하기 

 

Application Load Balancer를 사용하여 한 도메인을 다른 도메인으로 리디렉션

Application Load Balancer 서비스는 HTTP에서 HTTPS로의 리디렉션은 물론 도메인 이름의 리디렉션을 지원합니다. Application Load Balancer를 가리키는 도메인이 있는 경우, Amazon S3 (단순 스토리지 서비스) 대신

aws.amazon.com

S3를 사용하여 리디렉션 하기

 

Route 53를 사용하여 도메인을 다른 도메인으로 리디렉션

루트(apex) 도메인(예: example.com)의 인터넷 트래픽을 다른 도메인(예: example.net)으로 리디렉션하려고 합니다. 어떻게 해야 합니까?

aws.amazon.com