GitHub Pages 커스텀 도메인 연결: DNS, CNAME, HTTPS 설정

GitHub Pages 커스텀 도메인 설정 방법: 루트(apex)·www용 DNS 레코드, CNAME 파일의 역할, 도메인 인증, HTTPS 적용까지 한 번에 정리했습니다.

자주 묻는 질문

GitHub Pages 루트(apex) 도메인에는 어떤 IP 주소를 사용하나요?

GitHub 공식 문서(2026년 11월 확인)에 따르면 루트 호스트(@)에는 A 레코드 4개를 등록합니다: 185.199.108.153, 185.199.109.153, 185.199.110.153, 185.199.111.153. IPv6도 사용하려면 AAAA 레코드 4개를 추가하세요: 2606:50c0:8000::153, 2606:50c0:8001::153, 2606:50c0:8002::153, 2606:50c0:8003::153. GitHub는 AAAA 레코드를 추가하더라도 A 레코드를 함께 유지하길 권장합니다. GitHub가 이 값을 변경할 수 있으니 붙여넣기 전에 공식 문서와 꼭 대조해 보세요.

저장소에 CNAME 파일이 꼭 필요한가요?

브랜치에서 배포하는 경우에만 필요합니다. 이때는 Settings > Pages에서 커스텀 도메인을 저장하면 GitHub가 소스 브랜치의 루트에 CNAME 파일을 자동으로 커밋해 줍니다. 커스텀 GitHub Actions 워크플로로 배포한다면 CNAME 파일은 생성되지 않으며, 이미 있는 파일도 무시되므로 필요하지 않다고 GitHub는 안내합니다.

Enforce HTTPS 체크박스가 회색으로 비활성화되어 있어요. 왜 그런가요?

GitHub에 따르면 도메인을 추가한 뒤 이 옵션을 사용할 수 있게 되기까지 최대 24시간이 걸릴 수 있습니다. 인증서는 자동으로 발급되므로, 체크박스가 계속 막혀 있다면 대개 DNS가 아직 전파되지 않았거나 불필요한 레코드가 남아 있기 때문입니다. 예를 들어 루트에 A, AAAA, ALIAS, ANAME 레코드가 추가로 있거나, www의 CNAME이 GitHub가 아닌 다른 곳을 가리키는 경우입니다. 또한 도메인은 64자 미만이어야 합니다. 계속 진행되지 않으면 도메인 옆의 Remove를 클릭한 뒤 다시 입력하고 저장해 보세요.

루트 도메인과 www 중 무엇을 사용해야 하나요?

GitHub는 www를 권장합니다. 공식 문서에 따르면 www 서브도메인은 GitHub 서버 IP 주소가 바뀌어도 영향을 받지 않아 가장 안정적인 커스텀 도메인 유형입니다. 어느 쪽을 커스텀 도메인으로 지정하든, 두 도메인의 DNS가 모두 GitHub Pages를 가리키고 있다면 GitHub가 나머지 한쪽을 지정한 도메인으로 리디렉션해 줍니다.

GitHub Pages 커스텀 도메인이 적용되기까지 얼마나 걸리나요?

GitHub에 따르면 DNS 변경 사항이 전파되는 데 최대 24시간이 걸릴 수 있습니다. 실제로는 더 빨리 반영되는 경우가 많지만, 문제가 있다고 판단하기 전에 하루 정도는 기다리는 것이 좋습니다.

GitHub Pages에 와일드카드 DNS 레코드를 써도 안전한가요?

GitHub는 *.example.com 같은 와일드카드 레코드를 사용하지 말 것을 강력히 권고합니다. 공식 문서에 따르면 도메인을 인증했더라도 도메인 탈취 위험에 즉시 노출됩니다. 대신 실제로 사용하는 서브도메인별로 레코드를 만드세요.

한 줄 요약: 저장소의 Settings > Pages에서 Custom domain에 도메인을 입력하고 저장하세요. 그다음 DNS 제공업체에서 www는 CNAME 레코드로 <username>.github.io에 연결하고, 루트 도메인(example.com)은 A 레코드 4개로 GitHub에 연결합니다. GitHub가 인증서 발급을 마치면 Enforce HTTPS를 체크하면 끝입니다. 저장소 설정 한 번과 DNS 레코드 몇 개면 충분하고, 지연되는 대부분의 원인은 DNS 전파입니다. GitHub에 따르면 전파에는 최대 24시간이 걸릴 수 있습니다.

아래 내용은 모두 2026년 11월에 GitHub 공식 문서를 기준으로 확인했습니다. DNS 값은 바뀔 가능성이 가장 높은 부분이므로, 붙여넣기 전에 GitHub Pages 커스텀 도메인 문서에서 다시 확인하세요.

먼저 도메인 유형을 고르세요

방문자가 접속할 주소커스텀 도메인으로 지정할 값필요한 DNS 레코드참고
www.example.comwww.example.comwww에 <username>.github.io를 가리키는 CNAME + 루트에 A 레코드GitHub 권장 방식. example.com은 www로 리디렉션됩니다.
example.comexample.com루트에 A 레코드(또는 ALIAS/ANAME 1개) + www에 CNAMEwww.example.com은 루트 도메인으로 리디렉션됩니다.
blog.example.comblog.example.comblog에 <username>.github.io를 가리키는 CNAME루트 도메인 레코드는 필요 없습니다.

GitHub 문서에 따르면 www 서브도메인은 GitHub 서버 IP 주소 변경의 영향을 받지 않아 가장 안정적인 선택입니다. 루트 도메인을 꼭 써야 할 이유가 없다면 www를 고르세요. 아직 도메인 등록업체를 고르는 중이라면 도메인 등록업체 비교에서 선택지를 볼 수 있고, 도메인 비용 가이드에서 갱신 요금도 확인할 수 있습니다.

단계별 도메인 연결 방법

  1. GitHub에 도메인 추가. 저장소를 열고 Settings, 그다음 Pages("Code, planning, and automation" 아래)를 클릭합니다. Settings 탭이 보이지 않으면 "More" 드롭다운에서 찾으세요. Custom domain 입력란에 도메인을 입력하고 Save를 클릭합니다.
  2. GitHub가 저장소에 한 일 확인. 브랜치에서 배포하는 경우 GitHub가 해당 브랜치 루트에 CNAME 파일을 커밋합니다. 커스텀 GitHub Actions 워크플로로 배포하는 경우에는 CNAME 파일이 생성되지 않고, 기존 파일이 있어도 무시됩니다.
  3. 기본 DNS 레코드 삭제. DNS 제공업체가 사용하려는 호스트에 주차(parking) 페이지용 기본 레코드를 자동으로 만들어 두었다면 먼저 삭제하세요.
  4. DNS 레코드 생성. DNS 제공업체에서 레코드를 만듭니다(다음 섹션 참고).
  5. 전파 대기. GitHub는 최대 24시간이라고 안내합니다. 터미널에서 dig www.example.com +noall +answer로 진행 상황을 확인할 수 있습니다.
  6. HTTPS 강제 적용. 옵션이 활성화되면 체크합니다(아래 참고).

순서는 생각보다 중요하지 않습니다

DNS 레코드는 GitHub에 도메인을 저장하기 전에 만들어도, 후에 만들어도 됩니다. 위험한 경우는 DNS가 GitHub Pages를 가리키는데 그 도메인을 어떤 저장소도 점유하지 않은 상태입니다. GitHub는 도메인을 GitHub에 추가하지 않은 채 DNS만 설정하면 다른 사람이 여러분의 서브도메인 중 하나에서 사이트를 호스팅할 수 있다고 경고합니다. 먼저 GitHub에 도메인을 저장하고, 그다음에 DNS를 설정하세요.

DNS 레코드

www 또는 서브도메인: CNAME 1개

유형호스트값
CNAMEwww<username>.github.io

저장소 이름 없이 사용자 이름 또는 조직 이름만 사용하세요. 저장소 설정에 표시되는 고유한 *.pages.github.io 주소로는 CNAME을 연결하지 말라고 GitHub가 명시하고 있습니다.

루트(apex) 도메인: A 레코드 4개 (2026년 11월 확인)

유형호스트값
A@185.199.108.153
A@185.199.109.153
A@185.199.110.153
A@185.199.111.153

IPv6가 필요하다면 @에 AAAA 레코드를 선택적으로 추가하세요.

유형호스트값
AAAA@2606:50c0:8000::153
AAAA@2606:50c0:8001::153
AAAA@2606:50c0:8002::153
AAAA@2606:50c0:8003::153

IPv6 도입이 아직 고르지 않기 때문에, GitHub는 AAAA 레코드를 추가하더라도 A 레코드를 함께 등록하길 권장합니다. DNS 제공업체가 ALIAS 또는 ANAME 레코드를 지원한다면 A·AAAA 레코드 대신 <username>.github.io를 가리키는 레코드 하나만 써도 됩니다.

피해야 할 실수 두 가지:

  • 루트에 불필요한 레코드 추가. GitHub에 따르면 @에 A, AAAA, ALIAS, ANAME 레코드를 추가로 두거나 www의 CNAME이 다른 곳을 가리키면 HTTPS 인증서 발급이 되지 않을 수 있습니다.
  • 서브도메인을 루트 도메인으로 연결. GitHub는 이렇게 하면 HTTPS 강제 적용에 문제가 생기고, 서브도메인이 사이트에 아예 연결되지 않을 수도 있다고 경고합니다. 서브도메인은 <username>.github.io로 연결하세요.

일부 DNS 제공업체는 루트 호스트에 @를 쓰고, 일부는 입력란을 비워 두거나 전체 도메인을 입력하게 합니다. 이는 DNS 제공업체의 방식일 뿐 GitHub 설정과는 무관합니다.

HTTPS 켜기

GitHub는 Let's Encrypt를 통해 커스텀 도메인용 인증서를 발급합니다. DNS가 올바르게 연결된 뒤에는 다음과 같이 합니다.

  1. Settings > Pages로 다시 돌아갑니다.
  2. 도메인 옆에 체크 표시가 있는지 확인합니다. DNS 확인을 통과했다는 뜻입니다.
  3. Enforce HTTPS를 체크합니다.

GitHub에 따르면 이 옵션이 활성화되기까지 최대 24시간이 걸릴 수 있습니다. 저장하고 몇 분이 지나도 옵션이 나타나지 않으면, GitHub가 제안하는 해결 방법은 커스텀 도메인 옆의 Remove를 클릭하고 도메인을 다시 입력한 뒤 Save를 클릭하는 것입니다. 인증서가 생성되려면 도메인이 64자 미만이어야 합니다.

체크박스가 계속 회색이라면 아래 목록을 차례로 확인하세요.

  • [ ] 해당 호스트의 DNS가 GitHub로 연결됨(dig 결과에 IP 4개 또는 <username>.github.io CNAME이 표시됨)
  • [ ] 루트에 불필요한 A, AAAA, ALIAS, ANAME 레코드가 없음
  • [ ] www CNAME이 루트나 pages.github.io 주소가 아닌 <username>.github.io를 가리킴
  • [ ] Settings > Pages의 도메인이 DNS에 입력한 값과 정확히 일치함
  • [ ] 도메인을 한 번 삭제했다가 다시 추가해 봄

도메인 인증하기 (적극 권장)

도메인 인증을 해 두면 Pages 사이트의 연결이 끊어지더라도 다른 GitHub 계정이 여러분의 도메인을 가로채지 못합니다. GitHub는 저장소를 삭제했을 때, 결제 플랜이 다운그레이드되었을 때, 또는 도메인이 GitHub Pages용으로 설정된 채 인증되지 않은 상태에서 연결이 해제되는 모든 변경이 있을 때 도메인 탈취가 가능하다고 설명합니다.

  1. 저장소 설정이 아니라 프로필 설정을 열고, 사이드바에서 Pages를 선택합니다.
  2. Add a domain을 클릭하고 도메인을 입력해 확인합니다.
  3. GitHub가 보여 주는 TXT 레코드를 만듭니다. 호스트는 _github-pages-challenge-USERNAME.example.com 형태입니다.
  4. dig _github-pages-challenge-USERNAME.example.com +nostats +nocomments +nocmd TXT로 레코드가 조회되는지 확인합니다.
  5. GitHub로 돌아가 도메인 옆 메뉴에서 Continue verifying을 선택한 뒤 Verify를 클릭합니다.

GitHub에 따르면 즉시 완료될 수도 있고 최대 24시간이 걸릴 수도 있습니다. 인증이 끝난 뒤에도 TXT 레코드는 그대로 두세요. 또한 *.example.com 같은 와일드카드 레코드는 쓰지 마세요. GitHub는 도메인을 인증했더라도 탈취 위험이 있다고 안내합니다.

자주 겪는 문제

  • 커스텀 도메인에서는 404, github.io 주소에서는 정상 작동. Settings > Pages에 도메인을 저장하지 않았거나 DNS가 아직 전파되지 않은 경우입니다. 두 가지를 모두 확인하세요.
  • 배포할 때마다 도메인이 초기화됨. 브랜치에서 배포한다면 소스 브랜치의 CNAME 파일에 도메인이 들어 있어야 합니다. 브랜치 루트를 비우는 빌드나 이 파일을 빼먹는 배포는 파일을 삭제할 수 있습니다. 커스텀 Actions 워크플로로 바꾸면 이 파일이 필요 없어집니다.
  • 루트 도메인은 되는데 www는 안 됨(또는 반대). 두 호스트 모두 레코드가 필요합니다. 짝이 되는 호스트도 DNS가 GitHub Pages를 가리킬 때만 GitHub가 리디렉션해 준다는 점을 기억하세요.
  • 인증서가 계속 발급되지 않음. 위의 체크리스트를 따라가되, 먼저 불필요한 레코드가 없는지 확인하세요.

DNS를 직접 관리하고 싶지 않다면

GitHub Pages는 이미 저장소에서 관리하는 정적 사이트에 잘 맞습니다. 내 도메인으로 사이트를 빠르게 열고 싶은 것이 주목적이라면, We.Inc 커스텀 도메인이 빌더 안에서 같은 DNS 단계를 안내해 주고, 도메인 연결 가이드는 어떤 제공업체든 적용할 수 있는 방법을 설명합니다. We.Inc 무료 플랜에서는 준비된 템플릿으로 사이트를 최대 3개까지 게시할 수 있습니다. 프롬프트로 사이트 초안을 만들어 주는 AI 빌더는 월 $20의 Starter 플랜부터 이용할 수 있습니다. 여기에서 가입하세요.

무료로 시작하기 · 신용카드 필요 없음

Umair Ali Sadaqat

We.Inc 설립자

Umair는 We.Inc의 설립자입니다. AI 웹사이트 제작, 에이전시, 웹 스튜디오 운영 사업에 관해 글을 씁니다.

멋진 것을 만들 준비가 되셨나요?

하나의 플랫폼에서 출시하고 성장하고 자동화하는 15,000+개 비즈니스가 We.Inc를 사용합니다.

무료로 시작하기

신용카드 필요 없음 · 영업팀에 문의하기

관련 항목: 블로그

제품

대상

기능

리소스

회사

사이트맵