Netlify에서 커스텀 도메인 사용과 DNS 설정
Netlify에 웹사이트를 배포하면 기본적으로 <웹사이트명>.netlify.app
이라는 무료 도메인 네임(domain name)을 주는데요.
취미 프로젝트라면 이 기본 무료 도메인만 사용해도 큰 지장이 없겠지만 대부분의 실제로 운영되는 웹사이트는 유료로 구매한 도메인 이름을 사용해야 할 것입니다.
이렇게 Netlify 사용자가 별도로 구매해서 Netlify에서 주는 도메임 대신에 사용하는 도메인 네임을 소위 커스텀(custom) 도메인 네임이라고 하는데요. 이번 포스팅에서는 Netlify에 배포한 웹사이트에 커스텀(custom) 도메인 네임을 설정하는 방법에 대해서 알아보겠습니다.
본 포스팅은 DNS 레코드에 대한 어느 정도 기본적인 지식을 필요로 합니다. 이와 관련 내용은 이 포스팅을 참고 부탁드립니다.
Netlify에서 도메인 등록
Netlify에서 별도로 구매하신 도메인 네임을 사용하려면 우선 Netlify 웹사이트에 들어가서 해당 커스텀 도메인 네임을 등록해야하는데요.
Netlify에서 커스텀 도메인 네임을 연결하고 싶은 웹사이트의 Site Settings
에서 Domain management
메뉴에 들어갑니다.
그 다음 Add a domain
버튼을 누른 후에 보유하고 계신 커스텀 도메인 네임을 입력하면 됩니다.
그러면 Netlify에서 기본으로 제공하는 <웹사이트명>.netlify.app
도메인 네임 아래에 막 추가한 커스텀 도메인 이름을 확인할 수 있는데요.
아직까지 DNS 설정을 하지 않았기 때문에 커스텀 도메인 이름 옆에 ⚠️ Awaiting External DNS
표시가 뜰 것입니다.
서브 도메인 설정
Netlify에 배포한 웹사이트에 blog.mysite.com
과 같은 서브 도메인을 붙이고 싶다면 CNAME 레코드를 DNS에 설정해야하는데요.
CNAME 레코드를 통해 커스텀 도메인이 Netlify에서 제공하는 기본 도메인 네임을 가리키게 하면 됩니다.
<서브 도메인>. CNAME <웹사이트명>.netlify.app.
예를 들어, your-blog.netlify.app
으로 접속 가능한 웹사이트를 blog.mysite.com
서브 도메인을으로 접속하고 싶다면 다음과 같은 DNS 설정이 필요합니다.
blog.mysite.com. CNAME your-blog.netlify.app.
DNS 설정은 도메인 네임을 구매한 업체의 웹사이트에 가서 하셔야 합니다. 참고로 국내 도메인 등록 서비스에서는 CNAME 레코드 설정을 “포워딩 관리” 또는 “도메인 별명 관리”라고 많이 부릅니다.
루트 도메인 설정
Netlify에서 mysite.com
과 같은 루트 도메인 네임을 사용하는 방법은 살짝 더 복잡한데요.
왜냐하면 관레적으로 루트 도메인 네임을 사용할 때는 www
서브 도메인 네임도 함께 사용하기 때문입니다.
(참고로 루트 도메인은 Apex Domain나 Base Domain, Bare Domain, Naked Domain이라고도 합니다.)
그래서 Netlify에서 루트 도메인을 등록하면 서브 도메인을 추가할 때와 달리 한 번에 두 개의 커스텀 도메인 네임이 추가되는데요.
왜냐하면 www
서브 도메인이 자동으로 추가되기 때문입니다.
(예를 들어, mysite.com
을 등록하면 www.mysite.com
도 같이 등록됩니다.)
그래서 우리는 루트 도메인에 대한 DNS 설정 뿐만 아니라 www
서브 도메인에 대한 설정도 추가로 해줘야 하는데요.
먼저 CNAME 레코드를 통해서 위에서 했던 것과 비슷하게 www
서브 도메인이 Netlify의 기본 도메인을 가리키게 해줍니다.
예를 들어, your-blog.netlify.app
으로 접속 가능한 웹사이트를 www.mysite.com
서브 도메인을으로 접속하고 싶다면 다음과 같은 DNS 설정이 필요합니다.
www.mysite.com. CNAME your-blog.netlify.app.
다음으로 ALIAS/ANAME 레코드 또는 Flattened CNAME을 통해서 루트 도메인이 Netlify의 로드밸런서 도메인 네임을 가리키도록 DNS 설정해줍니다.
mysite.com. ALIAS apex-loadbalancer.netlify.com.
만약에 도메인 등록 업체에서 ALIAS/ANAME 레코드 또는 Flattened CNAME 레코드를 지원하지 않는다면 차선책으로 A 레코드를 통해서 Netlify의 로드밸런서 IP 주소를 가리키도록 설정해줄 수 있습니다.
mysite.com A 75.2.60.5
루트 도메인과 www
서브 도메인 중에서 www
서브 도메인을 주(primary) 도메인로 설정하는 것이 권장되는데요.
루트 도메인이 주 도메인이되면 웹사이트 쿠키(Cookie)가 모든 서브 도메인까지 적용되어 동시에 여러 서브 도메인을 사용할 때 문제의 소지가 되기 때문입니다.
www
서브 도메인을 주(primary) 도메인로 설정해주면 루트 도메인으로 접속하는 사용자들은 Netlify가 자연스럽게 www
서브 도메인으로 리다이렉트(redirect) 시켜줄 것입니다.
여기서 루트 도메인도 www
서브 도메인과 동일하게 Netlify에서 제공하는 기본 도메인 네임(your-blog.netlify.app
)을 가리키게 하면 되지 않을까 생각하시는 분들도 있을 것 같은데요.
그러면 사용자가 루트 도메인으로 접속했을 때 Netlify 사이트에 문제없이 접속은 되지만 라디이렉트가 일어나지 않아서 브라우저의 주소창에 www
가 붙지 않게 됩니다.
반면에 루트 도메인가 Netlify의 로드밸런서를 가리키게 해주면 사용자가 루트 도메인으로 접속했을 때 301 Moved Permanently
를 응답받기 때문에 브라우저는 www
서브 도메인으로 접속된다는 차이가 있습니다.
Netlify DNS 활용
DNS 설정을 도메인 등록 업체를 통해서 직접 하지 않고 Netlify에서 대신 해준다면 얼마나 편할까요? 고맙게도 Netlify의 자체 도메인 관리 서비스인 Netlify DNS를 활용하면 가능합니다!
Netlify DNS는 Netlify에서 구매한 도메인 네임이라면 아무런 추가 설정없이 자동으로 사용되는데요.
외부에서 구매한 도메인 네임의 경우 수동으로 활성화시킬 수 있습니다.
Netlify에서 등록해놓은 커스텀 도메인에서 Options
버튼을 누르고 Set up Netlify DNS
를 선택하면 됩니다.
그러면 Netlify DNS를 활성화하된 커스텀 도메인 네임 옆에는 ✅ Netlify DNS
표시가 뜰 것입니다.
이제 해당 도메인을 구매한 업체 웹사이트에 가서 네임서버(Authoritative Nameserver, 권한있는 네임서버)를 다음으로 변경해줍니다.
dns1.p01.nsone.net
dns2.p01.nsone.net
dns3.p01.nsone.net
dns4.p01.nsone.net
도메인의 네임서버를 변경해주면 더 이상 외부 업체를 통해서 CNAME 레코드 추가나 A 레코드 추가와 같은 DNS 설정을 할 수 없게 되므로 주의 바랍니다. 하지만 원래 업체에서 제공하는 네임서버로 원복을 해주면 다시 기존대로 외부 업체를 통해서 DNS 설정을 할 수 있으니 큰 걱정은 안 하셔도 되겠습니다.
이렇게 Netlify에게 모든 DNS 설정을 위임하면 편리하지만 이 방법은 비교적 설정이 적용되는데 시간이 오래 걸린다는 단점이 있습니다. 업체에 따라 다르겠지만 도메인의 네임서버 변경 사항은 전 세계로 전파되는데 최대 이틀까지 걸릴 수 있는 것으로 알려져있습니다.
마치면서
이상으로 외부에서 구매한 도메인을 Netlify에 배포한 웹사이트에 어떻게 등록하고 DNS 설정을 하는지에 대해서 살펴보았습니다.