LETO

에이펙스 도메인

에이펙스 도메인은 하위 이름이 붙지 않은 example.com 자체를 가리킵니다. 루트 도메인, 네이키드 도메인이라고도 부르며 CNAME을 쓸 수 없다는 제약이 있습니다.

작성

에이펙스 도메인(apex domain)은 example.com처럼 하위 이름이 붙지 않은 도메인 자체를 가리킵니다. 루트 도메인, 네이키드(naked) 도메인, 제로 레벨 도메인 같은 이름으로도 불리며, DNS 존의 최상단에 해당합니다. www.example.com이나 api.example.com은 이 apex 아래의 서브도메인입니다.

www와의 관계

둘은 기술적으로 전혀 다른 이름입니다. example.com에 레코드를 넣었다고 www.example.com이 따라 동작하지는 않습니다. 그래서 회사 도메인을 설정할 때는 두 이름에 각각 레코드를 두고, 한쪽을 정식 주소로 정해 나머지를 그쪽으로 넘깁니다.

방식apex 설정www 설정
apex를 정식 주소로A 또는 ALIAS로 서비스 연결CNAME으로 apex 또는 서비스에 연결 후 전달
www를 정식 주소로전달 설정 또는 리디렉션용 ACNAME으로 서비스 연결

어느 쪽을 정식으로 둘지는 한 번 정하면 바꾸기 번거롭습니다. 외부 호스팅이나 SaaS를 많이 쓰면 CNAME을 자유롭게 쓸 수 있는 www가 유리하고, 주소를 짧게 보여 주고 싶으면 apex가 유리합니다. 전달 설정 방법은 도메인 전달(포워딩)을 참고하세요.

apex에 CNAME을 쓸 수 없는 이유

존의 최상단에는 반드시 NS 레코드와 SOA 레코드가 있어야 합니다. 한편 CNAME이 있는 이름에는 다른 타입의 레코드가 함께 올 수 없다는 규칙이 있습니다. 두 조건이 충돌하므로 apex에는 CNAME을 둘 수 없습니다.

우회 방법은 세 가지입니다.

  • A 레코드로 IP를 직접 적습니다. 서비스가 고정 IP를 알려 주는 경우에 가장 단순합니다.
  • DNS 서비스가 제공하는 ALIAS, ANAME, CNAME flattening 기능을 씁니다. 네임서버가 대상 이름을 대신 조회해 apex에 A 레코드처럼 응답하므로, 대상 쪽 IP가 바뀌어도 따라갑니다. 표준 레코드 타입이 아니라 서비스별 구현입니다.
  • apex에서는 리디렉션만 하고 실제 서비스는 www에 붙입니다.

기능별 차이와 설정 예는 와일드카드와 ALIAS에 정리되어 있습니다.

어느 쪽을 정식 주소로 삼을까

한쪽을 정하고 나머지를 HTTP 301로 넘기면 다음이 정리됩니다.

  • 검색엔진이 같은 내용을 두 주소로 보는 문제가 없어집니다.
  • 쿠키와 세션이 한 주소로 모입니다. apex에 설정한 쿠키는 모든 서브도메인으로 퍼지므로, 쿠키 범위를 좁히려면 서비스를 www 같은 하위 이름에 두는 편이 낫습니다.
  • 인증서에 두 이름을 모두 넣어야 합니다. example.com과 www.example.com은 별개 이름이므로 한쪽만 발급하면 다른 쪽에서 경고가 납니다. 발급 방법은 SSL 인증서 연결을 참고하세요.
  • 광고, 명함, 안내문에 쓸 표기를 하나로 맞출 수 있습니다.

어느 쪽을 고르든 다른 쪽 주소도 반드시 응답하게 해 두어야 합니다. 한쪽만 설정해 두면 주소를 다르게 입력한 사용자에게는 사이트가 없는 것처럼 보입니다. 이 증상의 점검 순서는 웹사이트가 열리지 않을 때에 있습니다.

자주 묻는 질문

둘 다 동작하게 해 두는 것이 맞습니다. 다만 한쪽을 정식 주소로 정하고 나머지는 그쪽으로 넘기는 구성을 권합니다. 두 주소가 따로 응답하면 검색 평가와 쿠키, 인증서 설정이 갈라집니다.

표준상 허용되지 않기 때문입니다. A 레코드로 IP를 직접 적거나, DNS 서비스가 제공하는 ALIAS나 ANAME 기능을 사용하세요. 외부 서비스가 IP를 알려 주지 않는 경우에는 ALIAS 지원 여부가 선택 기준이 됩니다.

www는 하위 이름이므로 CNAME을 쓸 수 있어 외부 서비스를 붙이기 쉽고, 대상 IP가 바뀌어도 레코드를 고치지 않아도 됩니다. 대신 주소가 길어지고 안내문에 www를 빠뜨리는 사람이 생깁니다.

관련 가이드