LETO

도메인 포워딩과 리다이렉션

레토는 도메인 포워딩을 추가 비용 없이 제공합니다. 대시보드에서 설정하는 위치와 301·302의 차이, www와 apex 통일, 마스킹 포워딩의 문제, HTTPS 포워딩에 인증서가 필요한 이유를 정리했습니다.

작성

도메인 포워딩은 어떤 주소로 들어온 방문자를 다른 주소로 보내는 동작이고, DNS 레코드와는 다른 단계에서 일어납니다. DNS는 이름을 IP 주소나 다른 이름으로 바꿔 주는 일까지만 하고, 주소창을 바꾸라고 지시하는 레코드 종류는 없습니다. 따라서 포워딩은 그 요청을 실제로 받은 웹 서버, CDN, 호스팅 플랫폼, 또는 등록기관이 제공하는 포워딩 서비스가 HTTP 응답으로 처리합니다.

레토는 도메인 포워딩을 추가 비용 없이 제공합니다. 대시보드에서 도메인 상세의 DNS 및 포워딩 탭에 있는 도메인 포워딩 카드에서 설정하며, 서버를 따로 두지 않아도 됩니다. 서버나 CDN에서 직접 리다이렉트하는 방법도 아래에 함께 정리했습니다.

포워딩과 DNS 레코드는 다른 단계입니다

요청 하나가 처리되는 순서를 보면 역할이 분명해집니다.

순서하는 일담당
1example.com 이 어느 IP인지 찾는다DNS (A, AAAA, CNAME)
2그 IP의 서버와 연결하고 TLS 핸드셰이크를 한다서버의 인증서
3요청을 받고 301 또는 302 응답을 돌려준다웹 서버, CDN, 포워딩 서비스
4브라우저가 새 주소로 다시 요청한다브라우저

즉 리다이렉트를 하려면 먼저 DNS가 어딘가를 가리켜야 하고, 그 어딘가가 응답할 수 있어야 합니다. 레코드 종류별 입력 방법은 DNS 레코드 설정에 있습니다.

301과 302, 어느 것을 쓸까

코드의미쓰는 경우검색엔진의 해석
301영구 이동도메인 교체, www 통일, http에서 https 전환기존 주소의 평가를 새 주소로 넘기고 새 주소를 대표로 색인
302임시 이동점검 페이지, 기간 한정 캠페인, 지역별 임시 분기원래 주소를 계속 대표로 유지
308영구 이동, 메서드 유지POST 요청까지 그대로 넘겨야 하는 API301과 동일하게 취급
307임시 이동, 메서드 유지임시 분기 중 POST를 보존해야 할 때302와 동일하게 취급

실무에서 가장 흔한 실수는 영구적인 주소 이전에 302를 쓰는 것입니다. 이 경우 검색엔진은 옛 주소를 계속 대표로 두기 때문에 새 도메인이 검색 결과에 자리 잡는 데 시간이 오래 걸립니다. 반대로 임시 페이지에 301을 쓰면 브라우저가 응답을 길게 캐시해 원래 주소로 돌아오기 어려워집니다.

  • 리다이렉트는 한 번에 최종 주소로 보냅니다. http 에서 https, 다시 www 로 두 번 거치면 응답이 그만큼 느려집니다
  • 경로를 유지합니다. 옛 주소의 하위 페이지가 모두 새 사이트의 첫 화면으로 가면 링크와 즐겨찾기가 전부 끊어집니다
  • 리다이렉트 고리가 생기지 않게 양쪽 규칙을 함께 점검합니다
  • 옛 도메인은 리다이렉트를 유지하기 위해 당분간 갱신해 둡니다

www 와 apex 중 하나로 통일하기

apex 도메인과 www 서브도메인은 DNS에서 서로 다른 이름입니다. 두 이름이 모두 열리게 하되, 한쪽만 실제 사이트를 보여 주고 나머지는 301로 넘기는 것이 기본 구성입니다.

대표 주소DNS 설정리다이렉트
apex (example.com)apex 에 A/AAAA, www 에 CNAME 또는 같은 A 값www 로 온 요청을 apex 로 301
wwwwww 에 CNAME, apex 에 A/AAAA 또는 ALIAS 계열apex 로 온 요청을 www 로 301

apex 쪽은 CNAME을 쓸 수 없어 선택지가 제한됩니다. 이름으로 가리켜야 하는 서비스를 apex 에 붙여야 한다면 ALIAS 계열 기능이 필요하고, 그 내용은 와일드카드 레코드와 ALIAS/ANAME에 정리했습니다. 어느 쪽을 대표로 둘지 판단하는 기준은 외부 서비스 연결하기에도 함께 적어 두었습니다.

두 이름 중 한쪽을 아예 비워 두는 구성은 피하세요. 사용자가 습관적으로 www 를 붙여 입력하는 경우가 많고, 레코드가 없으면 연결 실패 화면이 그대로 노출됩니다.

어디서 리다이렉트할지 고르기

방식적합한 경우유의할 점
레토 도메인 포워딩서버 없이 도메인만 보유한 경우, www 통일, 옛 도메인 정리추가 비용 없음, 대상 URL 하나를 지정하는 방식
웹 서버 설정이미 서버를 직접 운영하는 경우인증서 발급과 갱신을 직접 관리해야 함
CDN 또는 호스팅 플랫폼의 리다이렉트 규칙정적 사이트, 이미 CDN을 쓰는 경우규칙 문법이 제품마다 다름, 인증서는 보통 자동

레토 포워딩은 대시보드에서 다음 순서로 설정합니다.

  1. 도메인 상세의 DNS 및 포워딩 탭 열기

    대시보드(https://app.leto.kr)에서 도메인을 선택하고 DNS 및 포워딩 탭으로 갑니다. 같은 탭에 DNS 레코드 카드가 있으므로 레코드 상태를 함께 확인할 수 있습니다.

  2. 도메인 포워딩 카드에서 방식 고르기

    리다이렉트(HTTP 301/302) 와 iframe 삽입 중에 고릅니다. 주소를 실제로 옮기는 것이 목적이면 리다이렉트이고, 301과 302 가운데 어느 쪽을 쓸지는 위의 표를 기준으로 정합니다. iframe 삽입은 마스킹 방식이므로 아래 절의 부작용을 먼저 읽어 보세요.

  3. 대상 URL 입력과 HTTPS 사용

    방문자를 보낼 주소를 넣고 HTTPS 사용 을 켭니다. 켜 두면 첫 접속 시 인증서가 자동 발급되므로 https 로 들어온 요청에도 경고 없이 응답합니다.

  4. 동작 확인

    설정한 뒤 실제 응답 코드와 최종 도착지를 직접 확인합니다. 확인 명령은 이 문서 마지막에 적어 두었습니다. 이전이 진행 중인 도메인은 같은 탭의 편집이 막히므로 이전이 끝난 뒤에 설정하세요.

서버에서 직접 하는 경우의 설정도 간단합니다. 아래는 www 로 온 요청과 http 요청을 모두 apex 의 https 로 한 번에 보내는 예입니다.

server {
    listen 80;
    listen 443 ssl;
    server_name www.example.com example.com;
    ssl_certificate     /etc/ssl/example.com/fullchain.pem;
    ssl_certificate_key /etc/ssl/example.com/privkey.pem;

    if ($scheme = http) { return 301 https://example.com$request_uri; }
    if ($host = www.example.com) { return 301 https://example.com$request_uri; }
}

Apache 를 쓴다면 같은 동작을 다음처럼 적습니다.

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]

두 설정 모두 원래 요청 경로를 새 주소에 그대로 이어 붙이는 부분이 핵심입니다. 이 부분을 빼면 모든 요청이 첫 화면으로 몰리므로 반드시 포함하세요.

포워딩 카드로 표현하기 어려운 규칙, 예를 들어 경로별로 다른 곳으로 보내거나 쿼리 문자열에 따라 분기해야 하는 경우에는 리다이렉트 전용으로 쓸 작은 서버나 이미 쓰고 있는 CDN을 목적지로 두고 그쪽에서 301을 내보내는 방식이 확실합니다. 이 방법은 경로 유지, HTTPS, 응답 코드 선택을 모두 직접 통제할 수 있습니다.

마스킹(프레임) 포워딩을 권하지 않는 이유

마스킹 포워딩은 주소창을 옛 도메인으로 유지한 채 실제 사이트를 프레임 안에 끼워 보여 주는 방식입니다. 레토 포워딩 카드의 iframe 삽입 옵션이 이 방식입니다. 겉보기에는 원하는 결과처럼 보이지만 부작용이 많습니다.

  • 내부 페이지의 주소가 바뀌지 않으므로 특정 페이지를 링크로 공유할 수 없습니다
  • 검색엔진은 프레임 안의 내용을 대표 주소와 연결하지 못해 색인에서 불리합니다
  • 많은 사이트가 프레임 삽입을 응답 헤더로 거부하므로 빈 화면이 될 수 있습니다
  • 겉 페이지와 안쪽 페이지의 http/https 가 섞이면 브라우저가 차단합니다
  • 로그인, 결제, 외부 인증 과정이 프레임 안에서 막히는 경우가 많습니다
  • 방문 기록과 분석 도구의 유입 경로가 옛 도메인으로만 남아 통계가 왜곡됩니다

도메인 이름을 노출 목적으로 유지하고 싶다면, 마스킹 대신 옛 도메인에 간단한 안내 페이지를 두고 명확한 링크를 걸거나 301로 넘기는 편이 낫습니다.

HTTPS 포워딩에 인증서가 필요한 이유

https://old.example.com 으로 들어온 요청을 처리하려면, 서버는 응답을 보내기 전에 그 이름으로 TLS 핸드셰이크를 끝내야 합니다. 리다이렉트 응답도 HTTP 응답이므로 암호화된 연결 안에서만 전달됩니다. 즉 리다이렉트만 하는 도메인도 그 도메인 이름이 들어 있는 인증서가 필요합니다.

여러 도메인을 한 서버에서 리다이렉트한다면 각 이름을 인증서에 모두 넣거나 이름별로 인증서를 발급해야 합니다. 발급과 자동 갱신 방법은 SSL 인증서 적용하기를, 경고 화면의 원인 분류는 SSL 오류 해결을 참고하세요. 설정 뒤에는 응답 코드와 최종 도착지를 직접 확인하는 것이 좋습니다.

curl -sSI http://www.example.com | grep -i '^HTTP/\|^location:'
curl -sSL -o /dev/null -w '%{num_redirects} %{url_effective}\n' https://www.example.com

자주 묻는 질문

할 수 없습니다. DNS에는 리다이렉트를 지시하는 레코드 종류가 없고, DNS는 이름을 IP나 다른 이름으로 바꿔 주는 일까지만 합니다. 사용자의 주소창을 다른 주소로 바꾸려면 그 요청을 받은 웹 서버나 CDN이 HTTP 응답으로 301 또는 302를 돌려주어야 합니다.

주소가 앞으로도 계속 새 위치에 있다면 301, 점검이나 캠페인처럼 나중에 되돌릴 예정이라면 302입니다. 검색엔진은 301을 영구 이동으로 보고 기존 주소의 평가를 새 주소로 넘기며, 302는 원래 주소를 계속 대표 주소로 유지합니다. 주소 이전인데 302를 쓰면 새 주소가 제대로 평가받기까지 오래 걸립니다.

둘 다 같은 내용을 그대로 보여 주면 같은 페이지가 두 주소로 존재해 검색 평가가 분산되고, 쿠키와 캐시 기준도 둘로 나뉩니다. 한쪽을 대표 주소로 정하고 나머지는 301로 넘기는 구성이 안전합니다. 어느 쪽을 대표로 할지는 기술적으로 큰 차이가 없으니 이미 홍보물에 쓰인 주소를 기준으로 정하면 됩니다.

권하지 않습니다. 마스킹은 원래 사이트를 프레임 안에 넣어 보여 주는 방식이라 내부 페이지 주소를 공유할 수 없고, 검색엔진이 내용을 대표 주소와 연결하지 못합니다. 프레임 삽입을 거부하는 사이트에서는 빈 화면이 되고, HTTPS 혼용이나 로그인 처리에서도 문제가 생깁니다. 레토 포워딩 카드에도 iframe 삽입 옵션이 있지만, 주소를 실제로 옮기는 것이 목적이라면 리다이렉트를 고르세요.

필요합니다. 브라우저는 https 주소에 접속할 때 TLS 연결을 먼저 맺고 나서 응답을 받기 때문에, 리다이렉트 응답을 보내기 전에 그 도메인 이름으로 된 인증서가 있어야 합니다. 인증서가 없으면 사용자는 리다이렉트 대신 경고 화면을 보게 됩니다. 레토 포워딩을 쓸 때는 HTTPS 사용 옵션을 함께 켜면 첫 접속 시 인증서가 자동 발급됩니다.

관련 가이드