Vercel에 Cloudflare로 커스텀 도메인 연결하는 방법|DNS·SSL 설정 완벽 가이드
Vercel에 사이트를 배포하면 처음에는 프로젝트이름.vercel.app 주소가 생긴다. 테스트할 때는 충분하지만, 실제 서비스를 운영하려면 기억하기 쉬운 나만의 도메인을 연결하고 싶어진다. 이 글에서는 도메인의 DNS를 Cloudflare에서 관리하면서 Vercel 프로젝트에 연결하는 방법을 처음부터 끝까지 따라 해본다.
이 글에서 완성할 구성
도메인 등록업체 → Cloudflare 네임서버 및 DNS 관리 → Vercel에 배포된 사이트
예시는 example-site.com을 사용한다. 실제 작업에서는 자신의 도메인으로 바꾸면 된다.
가장 먼저 알아둘 점
Cloudflare의 주황색 구름, 즉 프록시 기능을 꼭 켜야 하는 것은 아니다. Vercel은 이미 자체 CDN과 보안 기능을 제공한다. Vercel 공식 안내는 Cloudflare를 유지해야 한다면 회색 구름인 DNS only로 사용하는 것을 권장한다. 이 글도 이 구성을 기본으로 설명한다.
1. 시작하기 전에 준비할 것
- Vercel에 정상 배포된 프로젝트
- 소유하고 있는 커스텀 도메인
- 해당 도메인을 추가할 Cloudflare 계정
- 도메인을 구입한 업체의 네임서버 변경 권한
도메인을 GoDaddy, Namecheap, Squarespace Domains 같은 업체에서 샀더라도 괜찮다. 도메인을 다른 곳으로 이전할 필요 없이 네임서버만 Cloudflare가 알려주는 주소로 바꾸면 Cloudflare에서 DNS를 관리할 수 있다. Cloudflare Registrar에서 도메인을 구입했다면 이 네임서버 변경 과정은 이미 적용되어 있다.
2. Cloudflare에 도메인 추가하기
STEP 1- Cloudflare 대시보드에 로그인한다.
- Add a domain 또는 Add site를 누른다.
https://나 경로 없이 도메인만 입력한다. 예:example-site.com- 처음이라면 Free 플랜으로도 DNS 관리에 충분하다.
- Cloudflare가 기존 DNS 레코드를 검색하면 내용을 검토한 뒤 다음 단계로 진행한다.
이메일을 사용 중이라면 특히 조심하자. 네임서버를 옮기기 전에 기존의 MX, SPF, DKIM, DMARC 레코드가 Cloudflare에 모두 복사됐는지 확인해야 한다. 이 레코드가 빠지면 웹사이트는 열려도 도메인 이메일이 갑자기 중단될 수 있다.
3. 도메인 등록업체에서 네임서버 변경하기
Cloudflare는 보통 계정마다 다른 두 개의 네임서버 주소를 보여준다. 예를 들면 ada.ns.cloudflare.com, bob.ns.cloudflare.com 같은 형식이다. 화면에 나온 두 주소를 정확히 복사한다.
- 도메인을 구입한 업체의 관리 화면에 로그인한다.
- Nameservers, DNS 또는 Custom nameservers 메뉴를 찾는다.
- 기존 네임서버를 Cloudflare가 알려준 두 주소로 교체한다.
- Cloudflare로 돌아와 Check nameservers now를 누른다.
- 상태가 Active가 될 때까지 기다린다.
네임서버 변경은 빠르면 몇 분 안에 끝나지만 등록업체와 DNS 캐시에 따라 더 오래 걸릴 수 있다. 이 단계가 완료되면 이후 DNS 레코드는 도메인 구입처가 아니라 Cloudflare의 DNS → Records에서 수정해야 한다.
DNS가 무엇인지 쉽게 말하면, 사람이 입력한 도메인 주소를 실제 서버 위치로 안내하는 인터넷 주소록이다. 지금 하는 작업은 그 주소록의 관리자를 Cloudflare로 바꾸는 과정이다.
4. Vercel 프로젝트에 커스텀 도메인 추가하기
STEP 2- Vercel 대시보드에서 연결할 프로젝트를 연다.
- Settings → Domains로 이동한다.
- 루트 도메인
example-site.com을 입력하고 Add를 누른다. www.example-site.com도 함께 사용할지 선택한다. 일반적으로 둘 다 추가하는 편이 좋다.- 어느 주소를 기본으로 사용할지 정하고 다른 주소는 기본 주소로 리디렉션한다.
처음에는 Invalid Configuration 또는 DNS 설정이 필요하다는 표시가 떠도 정상이다. Vercel이 보여주는 DNS 레코드의 Type, Name, Value를 메모하거나 화면을 열어 둔다.
DNS 값은 반드시 내 Vercel 화면을 우선한다. 인터넷의 오래된 글에는 루트 도메인용 A 레코드로 76.76.21.21이 많이 보이고, 다른 프로젝트에는 216.198.79.1 또는 프로젝트별 CNAME이 표시될 수 있다. Vercel의 인프라와 프로젝트 설정에 따라 안내값이 달라질 수 있으므로 이 글의 예시 숫자를 무조건 복사하지 말자.
5. Cloudflare에 Vercel DNS 레코드 입력하기
STEP 3Cloudflare에서 해당 도메인을 선택한 뒤 DNS → Records → Add record로 이동한다. 아래 표는 자주 보이는 구성의 예시일 뿐이며, Value 또는 Target은 Vercel 프로젝트 화면에 나온 값을 입력해야 한다.
| 용도 | Type | Name | Target / Value | Proxy status | TTL |
|---|---|---|---|---|---|
| 루트 도메인 | A 또는 CNAME |
@ |
Vercel 화면의 값 | DNS only | Auto |
| www 주소 | CNAME |
www |
Vercel 화면의 값 | DNS only | Auto |
| 소유권 확인 | TXT |
Vercel 화면의 이름 | Vercel 화면의 인증값 | 해당 없음 | Auto |
레코드를 저장하기 전에 확인할 것
- 같은 이름의 기존
A,AAAA,CNAME레코드가 충돌하지 않는지 확인한다. @에 예전 서버를 가리키는 A 레코드가 남아 있다면 새 사이트가 간헐적으로 열리지 않을 수 있다.wwwCNAME은 주황 구름이 아닌 DNS only로 둔다.- MX와 이메일 인증용 TXT 레코드는 삭제하지 않는다.
- Vercel이 별도의 소유권 확인 TXT 레코드를 요구하면 그것도 추가한다.
저장한 뒤 Vercel의 Domains 화면으로 돌아가 Refresh 또는 재확인을 누른다. Cloudflare의 DNS only 레코드는 Auto TTL일 때 일반적으로 5분으로 설정되지만, 로컬 DNS 캐시 때문에 실제 반영은 더 늦게 보일 수도 있다.
6. www 리디렉션과 SSL 확인하기
STEP 4Vercel Domains 화면에 녹색 표시와 함께 Valid Configuration이 나타나면 기본 연결은 완료된 것이다. 브라우저에서 아래 주소를 각각 확인한다.
https://example-site.comhttps://www.example-site.com
둘 중 하나를 주 도메인으로 정하고 나머지는 주 도메인으로 리디렉션하는 것이 검색엔진 중복 문제를 줄이는 데 좋다. Vercel Domains 메뉴에서 기본 도메인과 리디렉션 대상을 설정할 수 있다.
SSL 인증서는 따로 구입해야 할까?
기본 구성에서는 그럴 필요가 없다. Vercel은 연결된 도메인에 HTTPS 인증서를 자동으로 발급한다. Cloudflare를 DNS only로 사용하면 방문자는 Cloudflare 프록시를 거치지 않고 Vercel로 직접 연결되므로, 브라우저에 보이는 인증서도 Vercel 쪽에서 제공된다.
그래도 Cloudflare 프록시를 켜고 싶다면
주황 구름을 켜면 방문자 → Cloudflare → Vercel의 이중 프록시 구조가 된다. Cloudflare 캐시나 WAF가 꼭 필요한 특별한 이유가 아니라면 추천하지 않는다. 켜야 한다면 도메인 검증과 Vercel 인증서 발급이 끝난 뒤 테스트하고, Cloudflare의 SSL/TLS 암호화 모드는 Full (strict)를 사용한다. Flexible 모드는 리디렉션 반복이나 보안 문제를 일으킬 수 있다.
Cloudflare 프록시를 켜면 Vercel의 일부 보안·봇 관리 기능이 예상대로 작동하지 않거나, 캐시 무효화가 두 군데로 나뉘어 장애 원인을 찾기 어려워질 수 있다. 초보자라면 DNS only가 훨씬 단순하다.
7. 잘 안 될 때 확인할 항목
Vercel에 계속 Invalid Configuration이 나온다
- Cloudflare 네임서버 상태가 Active인지 확인한다.
- Vercel에 표시된 값과 Cloudflare 레코드를 한 글자씩 비교한다.
- 레코드가 주황 구름이라면 DNS only로 바꾼다.
- 같은 호스트명의 오래된 A, AAAA, CNAME 레코드를 정리한다.
- 도메인이 다른 Vercel 계정에 연결됐다는 메시지가 나오면 Vercel이 요구하는 TXT 인증 레코드를 추가한다.
ERR_TOO_MANY_REDIRECTS가 나온다
Cloudflare 프록시를 켜고 SSL 모드를 Flexible로 사용했을 때 흔하다. 우선 회색 구름 DNS only로 돌려 정상 작동을 확인한다. 프록시가 꼭 필요하다면 Vercel의 HTTPS 인증서가 정상 발급된 뒤 Cloudflare를 Full (strict)로 설정한다.
SSL 인증서 발급이 멈춰 있다
프록시를 DNS only로 바꾸고 잠시 기다린다. 별도의 CAA 레코드를 사용 중이라면 그 설정이 Vercel이 사용하는 인증기관의 인증서 발급을 막고 있지 않은지 확인한다. 인증기관 값은 바뀔 수 있으므로 Vercel의 현재 오류 안내와 공식 문서를 기준으로 수정한다.
사이트는 열리는데 이메일이 안 된다
Cloudflare로 네임서버를 옮길 때 기존 MX, SPF, DKIM, DMARC 레코드가 빠졌을 가능성이 크다. 이전 DNS 업체의 기록이나 이메일 서비스의 안내와 비교해 복구한다. 웹사이트용 A/CNAME과 이메일용 MX/TXT는 서로 역할이 다르다.
내 컴퓨터에서만 이전 사이트가 보인다
DNS 캐시가 남아 있을 수 있다. 시크릿 창, 모바일 데이터, 다른 네트워크에서 확인하고 잠시 기다려 본다. 운영체제나 공유기의 DNS 캐시를 비운 뒤 다시 접속하는 것도 도움이 된다.
마무리: 가장 안전한 설정만 기억하자
최종 체크리스트
- Cloudflare의 네임서버 상태가 Active다.
- Vercel에 루트 도메인과 www 도메인을 모두 추가했다.
- DNS 값은 블로그 예시가 아니라 Vercel 프로젝트 화면의 값을 사용했다.
- Cloudflare Proxy status는 DNS only다.
- Vercel에 Valid Configuration이 표시된다.
- http, https, www, non-www 주소의 접속과 리디렉션을 확인했다.
- 도메인 이메일을 쓴다면 송수신도 테스트했다.
설정 과정이 길어 보이지만 실제 핵심은 간단하다. 도메인의 DNS 관리를 Cloudflare로 옮기고, Vercel이 알려준 주소를 Cloudflare DNS에 정확히 입력하는 것이다. 여기에 회색 구름 DNS only만 기억하면 이중 프록시 때문에 생기는 많은 문제를 피할 수 있다.
자주 묻는 질문 FAQ
Vercel에 커스텀 도메인을 연결하려면 돈을 내야 하나요?
도메인 구입 비용은 필요하지만 연결 작업 자체는 무료로 시작할 수 있다. Vercel의 커스텀 도메인 연결과 Cloudflare의 기본 DNS 관리는 무료 플랜에서도 사용할 수 있다. 다만 프로젝트 기능이나 트래픽이 무료 플랜의 범위를 넘는다면 별도의 유료 플랜이 필요할 수 있다.
Cloudflare에서 도메인을 다시 구입해야 하나요?
그럴 필요가 없다. GoDaddy, Namecheap, Squarespace Domains 등 다른 업체에서 구입한 도메인도 사용할 수 있다. 도메인 등록업체에서 네임서버를 Cloudflare가 제공한 두 주소로 변경하면 Cloudflare에서 DNS를 관리할 수 있다.
Cloudflare의 주황색 구름을 꼭 켜야 하나요?
Vercel에 연결하는 기본 구성에서는 켜지 않는 것이 좋다. 회색 구름인 DNS only로 설정하면 Cloudflare는 DNS만 관리하고 실제 웹 트래픽은 Vercel로 직접 전달된다. 주황색 구름을 켜면 이중 프록시가 되어 SSL, 리디렉션, 캐시 또는 일부 Vercel 보안 기능에 문제가 생길 수 있다.
DNS 변경 사항은 얼마나 기다려야 하나요?
DNS 레코드 변경은 보통 몇 분 안에 확인되지만, 네임서버 변경과 기존 DNS 캐시의 영향으로 더 오래 걸릴 수 있다. Cloudflare 상태가 Active인지 확인하고 시크릿 창, 모바일 데이터, 다른 네트워크에서도 접속해 보는 것이 좋다.
루트 도메인과 www 도메인을 모두 등록해야 하나요?
반드시 둘 다 등록해야 하는 것은 아니지만 example-site.com과 www.example-site.com을 모두 Vercel에 추가하는 것을 추천한다. 사용자가 어느 주소를 입력해도 사이트가 열리게 한 뒤, 한쪽을 기본 도메인으로 지정하고 다른 쪽은 기본 도메인으로 리디렉션하면 된다.
Vercel용 A 레코드 IP는 어떤 값을 입력해야 하나요?
Vercel 프로젝트의 Settings → Domains 화면에 표시되는 값을 입력해야 한다. 인터넷 글에서 본 76.76.21.21이나 216.198.79.1 같은 값을 무조건 복사하면 안 된다. Vercel의 인프라와 프로젝트 설정에 따라 A 또는 CNAME 값이 달라질 수 있다.
SSL 인증서를 따로 구매해야 하나요?
일반적인 Vercel 커스텀 도메인 연결에서는 별도로 구매할 필요가 없다. DNS 설정과 도메인 확인이 완료되면 Vercel이 HTTPS 인증서를 자동으로 발급한다. 인증서가 바로 발급되지 않으면 DNS only 설정, 충돌하는 DNS 레코드, CAA 레코드를 확인한다.
Cloudflare SSL/TLS 모드는 무엇으로 설정해야 하나요?
DNS only 구성에서는 Cloudflare가 웹 트래픽을 중계하지 않으므로 Cloudflare의 SSL 모드가 방문자와 Vercel 사이의 연결에 직접 적용되지 않는다. 주황색 구름 프록시를 별도로 켜야 한다면 Vercel 인증서 발급을 먼저 완료하고 Full (strict)를 사용한다. Flexible은 리디렉션 반복을 일으킬 수 있어 피하는 편이 좋다.
도메인 이메일도 계속 사용할 수 있나요?
계속 사용할 수 있다. 다만 네임서버를 Cloudflare로 바꾸기 전에 기존 MX, SPF, DKIM, DMARC 레코드가 정확히 복사됐는지 확인해야 한다. 웹사이트용 A·CNAME 레코드를 변경하면서 이메일용 MX·TXT 레코드를 삭제하지 않도록 주의한다.
도메인이 다른 Vercel 계정에 연결되어 있다고 나옵니다. 어떻게 하나요?
Vercel이 안내하는 소유권 확인용 TXT 레코드를 Cloudflare DNS에 추가한다. TXT 값은 계정과 도메인마다 다르므로 다른 예시를 복사하지 말고 Vercel 화면의 값을 그대로 입력한다. 인증이 끝난 뒤 해당 도메인을 현재 프로젝트에 다시 연결한다.
연결 후에도 vercel.app 주소로 접속할 수 있나요?
일반적으로 기존 프로젝트이름.vercel.app 주소도 계속 작동한다. 하지만 사용자와 검색엔진에는 커스텀 도메인을 대표 주소로 사용하는 것이 좋다. 사이트 내부 링크, 메타데이터, sitemap, Google Search Console 등도 커스텀 도메인을 기준으로 설정한다.
공식 참고자료
- Vercel: Working with domains
- Vercel: Troubleshooting domains
- Vercel: Vercel WAF vs. Cloudflare WAF
- Cloudflare: Update nameservers
- Cloudflare: Proxy status
- Cloudflare: Full (strict) SSL/TLS mode
댓글
댓글 쓰기