
대부분 프로젝트를 할 때 AWS 프리티어를 활용하고, 가비아같은 곳에서 하나의 도메인을 구입하여 연결한다. 프론트와 백에서 두 개의 도메인을 구입하는 것은 낭비가 될 수 있다. 따라서 우리는 서브도메인을 사용한다.
서브도메인이란, 특정 도메인의 prefix를 의미한다.
ko.wikipedia.org 도메인에서, ko가 서브도메인이며, 메인 도메인은 wikipedia.org이다.
따라서, 내가 honeypot.my이라는 도메인을 구입하였다면, support.honeypoy.my, mobile.honeypot.my 등 다양하게 활용하여 계층별로 관리가 용이하다.
나는 본 프로젝트에서 프론트 도메인과 백엔드 도메인으로 나누어 사용할 생각이다.
honeypot.my 도메인을 구매하였는데, 두 도메인을 어떻게 구분할까?
DNS의 동작 원리를 생각 해 보자.
DNS의 동작 원리
honeypot.my를 주소창에 입력함- DNS쿼리를 통해
honeypot.my에 해당하는 ip주소를 찾아옴- 해당 ip주소로 요청을 보냄
위의 내용은 누구나 알고 있는 내용이다.
honeypot.my와 server.honeypot.my 도메인을 내가 원하는 ip주소로 매핑시키기 위해서는 DNS 서버의 DB에 접속하여 도메인 매핑 정보를 가져와야 한다. 그리고 해당 정보를 DNS 레코드라고 한다.

비유를 위한 예시이지만, 위 사진처럼 특정 도메인을 특정 IP주소로 매핑해 주는 정보가 담겨있는 행을 DNS Record라고 이해하면 된다. (DB에서 각 row를 record라고도 부르니까?)
그리고 DNS 레코드에는 레코드 타입이 담겨있다. 각 타입에 대해 알아보자.
우리가 아는 DNS의 역할과 동일하다. 도메인 네임을 IP주소로 변환한다.
honeypot.my 접속 시 1.2.3.4 주소로 연결한다.server.honeypot.my 접속 시 1.2.3.5 주소로 연결한다.dev.honeypot.my 접속 시 1.2.3.6 주소로 연결한다.도메인 별명 레코드라고도 불리며, 도메인 네임을 다른 도메인 네임으로 변환한다.
www.honeypot.my 접속 시 honeypot.my 으로 연결한다.api.honeypot.my 접속 시 server.honeypot.my 으로 연결한다.blog.honeypot.my 접속 시 medium.com 으로 연결한다.그리고, 해당 도메인네임에서 IP주소를 찾기 위해, 다시한번 DNS 변환 과정을 거쳐 IP주소를 알아내게 된다.
메일서버 레코드이다. 누군가 jinwoo@honeypot.my으로 이메일을 보냈을 때, honeypot.my 서버에서 해당 메일을 처리하도록 할 수 있다.
이것을 활용하여 개인 메일 서버를 구축하는 경우도 있다고 한다.(언젠간 해 보고 싶다)
네임서버 레코드로, 가비아와 Route53을 이용하여 DNS를 구축 해 봤다면 네임서버를 접해 본 적이 있을 것이다.
네임서버란, 실제 DNS Record가 담겨 있는 서버이다. DNS질의의 말단에서 정보를 가져오는 곳이다.

위와 같은 NS Record가 있다고 하자. 사용자가 honeypot.my로 접속하였을 때 ns.dnstool.com서버로 A, CName, MX타입 등의 DNS 질의를 보내는 것이다. CName Record와 비슷해 보이지만 다르다.
도메인 구입 과정은 생략. 구입 후 도메인 연결은 아래에서 진행한다.

가비아 - 서비스 관리 - DNS 관리툴을 클릭한다.

DNS 설정 클릭

다음처럼 도메인을 변경 해 준다.
나는 두 개의 도메인을 사용할 예정이다.
호스트가 도메인네임 앞에 붙는 Prefix, 즉 서브도메인이다.
@는 서브도메인이 없음을 의미한다.
위에서 DNS Record Type에 대해 배웠으므로, 위의 레코드가 의미하는 것을 알 수 있다.
server.honeypot.my으로 접속 시 43.201.79.198 IP주소로 연결된다. www.honeypot.my으로 접속 시 vercel에서 관리하는 주소(cname.vercel-dns.com)로 접속된다.honeypot.my으로 접속 시 vercel에서 관리하는 주소(cname.vercel-dns.com)로 접속된다.-> Vercel에 배포된 프론트엔드 페이지로 연결함을 의미하고, Vercel에서도 도메인 설정이 필요하다.

왜 내가 설정한 서브도메인을 DNS에서 못 찾을까? 원래 시간이 걸린다.

Google DNS인 8.8.8.8을 사용하면 DNS가 네트워크에 전파되었는지 알 수 있다.

$ nslookup 명령어를 통해, DNS의 결과값을 확인 가능하다. 바로 반영이 되는게 아니라, DNS의 캐싱 서버, TDL 서버, 루트 서버 등 반영하는데 시간이 10분쯤 걸린다.

Vercel에 배포한 프로젝트로 들어와 Settings - Domains를 누른다.


내가 구입한 도메인을 입력하고, Add Domain 버튼을 클릭한다.
www.도메인도 추가 해 주면, Vercel에서 내 도메인으로 알아서 리다이렉트 해 준다.

성공적으로 반영이 되었고, 10분정도 기다렸다 honeypot.my으로 접속해 보자.

많은 자료를 검색 해 보면 Route53를 통해 DNS 레코딩을 진행하고, 도메인의 네임서버를 Route53으로 위임하는 경우가 많다.

(네임서버를 aws에 있던 값으로 변경)
Route53도 가비아와 같은 도메인 호스팅 사이트이기 때문에 두 군데에서 할 필요가 없다. 그리고 Route53은 한 달에 5천원정도 나감