---
title: "Cloudflare로 SaaS 커스텀 도메인 구축: 설정·비용·한도 — Dardo"
description: "Cloudflare for SaaS로 고객이 SaaS에서 자신의 도메인을 쓰게 하세요. DNS 흐름, 인증서 검증, 요금, apex 제한, 대안까지 정리했습니다."
url: "https://dardo.studio/ko/blog/custom-domains-for-saas/"
language: "ko"
translations: {"en":"https://dardo.studio/en/blog/custom-domains-for-saas/","es":"https://dardo.studio/es/blog/dominios-personalizados-para-saas/","fr":"https://dardo.studio/fr/blog/domaines-personnalises-saas/","de":"https://dardo.studio/de/blog/custom-domains-saas/","it":"https://dardo.studio/it/blog/domini-personalizzati-saas/","pt":"https://dardo.studio/pt/blog/dominios-personalizados-para-saas/","nl":"https://dardo.studio/nl/blog/eigen-domeinen-voor-saas/","sv":"https://dardo.studio/sv/blogg/egna-domaner-saas-cloudflare/","pl":"https://dardo.studio/pl/blog/wlasne-domeny-klientow-saas/","uk":"https://dardo.studio/uk/blog/custom-domains-for-saas/","ru":"https://dardo.studio/ru/blog/custom-domains-for-saas/","ar":"https://dardo.studio/ar/blog/custom-domains-for-saas/","hi":"https://dardo.studio/hi/blog/custom-domains-for-saas/","th":"https://dardo.studio/th/blog/custom-domains-for-saas/","ja":"https://dardo.studio/ja/blog/custom-domains-for-saas/","zh-Hans":"https://dardo.studio/zh-Hans/blog/custom-domains-for-saas/","zh-Hant":"https://dardo.studio/zh-Hant/blog/custom-domains-for-saas/"}
updated: "2026-10-10T09:10:59.759Z"
---

[블로그](https://dardo.studio/ko/blog/)

# SaaS 커스텀 도메인: Cloudflare for SaaS로 고객이 자기 도메인을 사용하게 하는 방법

Cloudflare for SaaS로 고객이 자신의 도메인을 SaaS에 연결하도록 해 보세요. 검증 방식, 2026년 10월 기준 비용, 한계가 드러나는 지점을 정리했습니다.

작성자 [Nicolás Cerón](https://dardo.studio/ko/studio/) ·2026년 10월 10일

![밤거리에 늘어선 서로 다른 상점들과, 보도 아래 단면에 보이는 진홍색 케이블이 모든 상점을 하나의 공용 기관실에 연결하고 있는 모습.](https://dardo.studio/_astro/01M4GYDRFXRY8D1WBNX295F126_2nc9Aq.webp)

## 먼저 결론부터

고객이 자신의 도메인(예: `portal.customer.com`)으로 여러분의 앱을 제공하게 하려면, 해당 도메인을 Cloudflare 존에 커스텀 호스트네임으로 등록합니다. 고객이 여러분을 가리키는 CNAME 레코드를 하나 추가하면 Cloudflare가 해당 호스트네임의 소유 여부를 확인하고, 인증 기관이 인증서를 발급하며, 요청이 앱에 도달하기 시작합니다.

2026년 10월 기준 [Cloudflare for SaaS 요금제 페이지](https://developers.cloudflare.com/cloudflare-for-platforms/cloudflare-for-saas/plans/)에 따르면 Free, Pro, Business 요금제에는 커스텀 호스트네임 100개가 포함되며, 추가 호스트네임은 개당 $0.10이고 이들 요금제의 최대 한도는 50,000개입니다.

모든 설계를 좌우하는 제약이 두 가지 있습니다. 유료 Enterprise 애드온이 없으면 고객은 루트(apex) 도메인(`customer.com`)을 여러분에게 연결할 수 없습니다. 그리고 와일드카드 커스텀 호스트네임, 커스텀 인증서, 인증 기관 선택은 Enterprise 전용입니다. Cloudflare 설정 자체는 몇 단계면 끝나지만, 그 주변의 제품 작업은 더 오래 걸리며 이 가이드의 대부분도 그 내용을 다룹니다.

## 커스텀 호스트네임이란

커스텀 호스트네임은 고객이 소유한 도메인을 Cloudflare가 여러분의 존으로 라우팅해 주는 것입니다. [설정 가이드](https://developers.cloudflare.com/cloudflare-for-platforms/cloudflare-for-saas/start/getting-started/)에 따르면 구성 요소는 네 가지입니다.

- **SaaS 존.** Cloudflare에 등록된 여러분의 도메인으로, Cloudflare for SaaS가 활성화되어 있어야 합니다. 시작하려면 Free 요금제의 존으로 충분합니다.
- **폴백 오리진.** 커스텀 호스트네임 트래픽이 향하는 프록시 DNS 레코드입니다. 예: `proxy-fallback.yourapp.com`
- **CNAME 대상.** 고객이 연결할 더 알아보기 쉬운 이름으로, 선택 사항입니다. 예: `customers.yourapp.com`
- **커스텀 호스트네임.** API나 대시보드로 생성하는 고객의 도메인이며, 각각 고유한 검증 상태를 가집니다. Cloudflare는 호스트네임마다 인증서를 두 개 발급합니다. 기본은 ECDSA P-256, 구형 클라이언트용 폴백은 RSA 2048비트입니다.

앱이 Dardo가 기반으로 삼는 플랫폼인 Cloudflare Workers에서 실행된다면 [Worker를 폴백 오리진으로 사용할 수 있습니다](https://developers.cloudflare.com/cloudflare-for-platforms/cloudflare-for-saas/start/advanced-settings/worker-as-origin/). `*/*` 라우트가 모든 커스텀 호스트네임의 요청을 받고, 코드가 `Host` 헤더를 읽어 테넌트를 찾습니다. Cloudflare는 호스트네임별 커스텀 메타데이터도 제공하지만 유료 Enterprise 애드온이므로, 다른 요금제에서는 D1 같은 자체 데이터베이스에서 조회하게 됩니다.

## 동작 흐름

1. **고객이 앱 설정에 도메인을 입력합니다.** 백엔드가 이를 정규화한 뒤 인증서 검증 방식을 지정해 [Create Custom Hostname](https://developers.cloudflare.com/api/resources/custom%5Fhostnames/methods/create/) 엔드포인트를 호출합니다.
2. **고객이 안내받은 DNS 레코드를 추가합니다.** 예: `portal.customer.com CNAME customers.yourapp.com`
3. **Cloudflare가 호스트네임 소유권을 검증합니다.** [실시간 검증](https://developers.cloudflare.com/cloudflare-for-platforms/cloudflare-for-saas/domain-support/hostname-validation/realtime-validation/)은 CNAME이 나타날 때 실행되며, 잠깐의 다운타임이 생길 수 있습니다. [사전 검증](https://developers.cloudflare.com/cloudflare-for-platforms/cloudflare-for-saas/domain-support/hostname-validation/pre-validation/)은 DNS를 바꾸기 전에 TXT 레코드나 HTTP 토큰을 사용하는 방식으로, 이미 운영 중인 도메인에 적합합니다. 고객의 존도 Cloudflare에 있는 경우("Orange-to-Orange" 구성)에는 사전 검증을 지원하지 않습니다.
4. **인증 기관이 도메인 통제권을 검증**하고 인증서를 발급합니다.
5. **호스트네임이 준비됩니다.** `status`와 `ssl.status`가 모두 `active`이고 DNS가 여러분의 대상을 가리킬 때입니다. Cloudflare는 `ssl.status`가 active로 바뀌기 전에 TLS 핸드셰이크가 성공할 수 있다고 경고하므로, 커스텀 호스트네임 상세 조회 엔드포인트를 기준으로 삼으세요.

### 인증서 검증 방식

Cloudflare의 [검증 가이드](https://developers.cloudflare.com/cloudflare-for-platforms/cloudflare-for-saas/security/certificate-management/issue-and-validate/validate-certificates/)에서 제공하는 옵션은 다음과 같습니다.

| 방식            | 고객이 할 일                                                       | DNS 전환 전에 사용 가능 | 참고                                                                                |
| ------------- | ------------------------------------------------------------- | --------------- | --------------------------------------------------------------------------------- |
| HTTP, 자동      | CNAME만 추가                                                     | 아니요             | 가장 간단합니다. Cloudflare는 고객이 "몇 분의 다운타임을 감수할 수 있을 때" 이 방식을 권장합니다.                    |
| HTTP, 수동      | 도메인이 이미 여러분을 가리키고 있다면 할 일 없음. 그렇지 않다면 현재 서버에서 여러분의 토큰을 제공해야 함 | 예               | 다른 공급자에서 도메인이 운영 중일 때 유용합니다.                                                      |
| TXT           | 안내받은 TXT 레코드 추가                                               | 예               | 와일드카드 호스트네임에 필수입니다.                                                               |
| Delegated DCV | \_acme-challenge CNAME을 한 번만 추가                               | 예               | 앞으로의 모든 인증서를 Cloudflare가 갱신할 수 있습니다. 기존 \_acme-challenge TXT 레코드가 있으면 사용할 수 없습니다. |

검증은 무한정 기다려 주지 않습니다. Cloudflare는 7일 동안 호스트네임 검증을 75회 재시도하며, [백오프 일정](https://developers.cloudflare.com/cloudflare-for-platforms/cloudflare-for-saas/domain-support/hostname-validation/backoff-schedule/)에 따르면 "검증에 실패하면 커스텀 호스트네임은 삭제됩니다." 인증서 토큰도 만료됩니다. Let's Encrypt는 7일, Google Trust Services와 SSL.com은 14일 후입니다.

## 비용 (2026년 10월 기준)

|                      | Free   | Pro    | Business | Enterprise                |
| -------------------- | ------ | ------ | -------- | ------------------------- |
| 포함된 호스트네임            | 100    | 100    | 100      | 맞춤                        |
| 추가 호스트네임당 가격         | $0.10  | $0.10  | $0.10    | 맞춤                        |
| 최대 호스트네임 수           | 50,000 | 50,000 | 50,000   | 무제한 (50,000개 초과 시 영업팀 문의) |
| 와일드카드 커스텀 호스트네임      | 아니요    | 아니요    | 아니요      | 예                         |
| 커스텀 인증서 및 CA 선택      | 아니요    | 아니요    | 아니요      | 예                         |
| 루트(apex) 프록시 / BYOIP | 아니요    | 아니요    | 아니요      | 유료 애드온                    |
| 커스텀 메타데이터            | 아니요    | 아니요    | 아니요      | 유료 애드온                    |

요금제 페이지에는 $0.10이 기간 표기 없이 적혀 있습니다. Cloudflare의 [2022년 발표](https://blog.cloudflare.com/waf-for-saas/)에서는 이를 "월 $2에서 $0.10으로" 낮춘 것이라고 설명했습니다. 이 월 단위 요금을 적용하면 고객 도메인이 1,000개일 때 포함된 100개를 넘는 900개에 대해 월 $90입니다.

제품을 설계할 때 중요한 청구 규칙이 두 가지 있습니다. Cloudflare의 [할당량 및 청구 페이지](https://developers.cloudflare.com/cloudflare-for-platforms/cloudflare-for-saas/quotas-and-billing/)에 따르면 모든 호스트네임은 삭제하기 전까지, "검증 또는 활성화 대기 중인 호스트네임"을 포함해 사용량에 집계됩니다. 또한 Enterprise가 아닌 요금제에는 API 적용 임계값이 있어, 이를 넘으면 새 호스트네임이 거부됩니다.

## 문제가 생기는 지점

### 루트(apex) 도메인

Cloudflare의 설정 가이드에는 이렇게 명시되어 있습니다. "By default, using an A record to point to the target is not a supported setup." 대부분의 DNS 제공업체는 도메인 루트에 CNAME을 허용하지 않으므로, 고객은 `www.customer.com`이나 `app.customer.com` 같은 서브도메인을 사용해야 합니다. [Apex 프록시](https://developers.cloudflare.com/cloudflare-for-platforms/cloudflare-for-saas/start/advanced-settings/apex-proxying/)를 사용하면 계정에 고정 IP 프리픽스가 할당되어 고객이 A 레코드를 쓸 수 있지만, 별도 비용이 드는 Enterprise 부가 옵션입니다. 이 옵션이 없다면 고객에게 서브도메인을 요청하고, DNS 제공업체에서 루트 도메인을 그 서브도메인으로 포워딩하는 방법을 안내하세요.

### 인증 기관과 CAA 레코드

Cloudflare의 [인증 기관 참조 문서](https://developers.cloudflare.com/ssl/reference/certificate-authorities/)에 따르면 커스텀 호스트네임에는 Let's Encrypt(90일 인증서), Google Trust Services, SSL.com(14일, 30일 또는 90일)을 사용할 수 있습니다. CA를 직접 고르는 기능은 Enterprise 전용이며, 그렇지 않으면 Cloudflare가 기본 CA를 사용하고 먼저 CAA 레코드를 확인합니다. 고객의 CAA 레코드가 해당 CA를 허용하지 않으면 "CAA records block issuance" 오류와 함께 발급이 실패하며, 이는 고객만 해결할 수 있습니다. CAA 조회는 CNAME 체인을 따라가므로 여러분의 타깃 도메인에 설정된 CAA 레코드도 영향을 줍니다. [문제 해결 가이드](https://developers.cloudflare.com/cloudflare-for-platforms/cloudflare-for-saas/security/certificate-management/issue-and-validate/validate-certificates/troubleshooting/)에는 고객 측에서 발생하는 다른 실패 원인으로 잘못된 DNSSEC 설정과 SERVFAIL을 반환하는 DNS 서버가 정리되어 있습니다.

### 갱신

커스텀 호스트네임 인증서의 유효 기간은 90일이며, 만료 30일 전부터 [갱신](https://developers.cloudflare.com/cloudflare-for-platforms/cloudflare-for-saas/security/certificate-management/issue-and-validate/renew-certificates/)할 수 있습니다. 와일드카드가 아닌 활성 호스트네임은 HTTP를 통해 자동으로 갱신됩니다. 고객이 DNS를 변경하는 등의 이유로 호스트네임이 더 이상 활성 상태가 아니면 고객이 새 토큰을 설정해야 하며, 토큰을 고객에게 전달하는 것은 여러분의 몫입니다. 와일드카드는 TXT로만 갱신할 수 있는데, Delegated DCV가 바로 이 과정을 자동화합니다.

### 다른 CDN 또는 Cloudflare를 사용하는 고객

Cloudflare는 다른 CDN이 DNS 레코드를 숨기는 경우 [해당 CDN을 사용하는 커스텀 호스트네임은 호환되지 않는다](https://developers.cloudflare.com/cloudflare-for-platforms/cloudflare-for-saas/domain-support/hostname-validation/)고 안내합니다. 도메인이 Cloudflare에 있는 고객은 반대의 문제를 낳습니다. 고객이 서비스를 떠났는데 [호스트네임을 삭제](https://developers.cloudflare.com/cloudflare-for-platforms/cloudflare-for-saas/domain-support/remove-custom-hostnames/)하지 않으면, DNS를 변경한 뒤에도 해당 호스트네임이 계속 여러분의 서비스로 라우팅될 수 있습니다.

### 검증 경로 앞의 Workers

Worker가 폴백 오리진이라면 `/.well-known/pki-validation/*`와 `/.well-known/acme-challenge/*` 요청을 변경 없이 그대로 통과시켜야 합니다. 앱의 404 페이지로 응답하는 포괄 라우트가 있으면 HTTP 검증이 실패합니다.

## 그 주변의 제품 작업

- **요금제 적용.** 어떤 요금제에 커스텀 도메인을 포함할지, 몇 개까지 허용할지 정하고, Cloudflare를 호출하기 전에 먼저 확인하세요. Cloudflare의 할당량과 한도는 상한선일 뿐, 여러분의 요금 정책이 아닙니다.
- **온보딩 화면.** 입력란은 하나면 됩니다. 입력값을 소문자로 바꾸고 프로토콜과 경로를 제거하세요. apex 프록시를 구매하지 않았다면 루트 도메인은 거부하고, Cloudflare가 커스텀 호스트네임으로 만들지 말라고 한 여러분 자신의 존 이름도 거부합니다. 그런 다음 추가해야 할 레코드를 복사 버튼과 함께 정확히 보여주세요.
- **쉬운 말로 두 가지 상태 보여주기.** 호스트네임과 인증서는 따로 검증되므로 둘 다 보여주세요. `ssl.validation_errors`는 안내 문구로 바꿔 주세요. "pending\_validation"보다 "도메인의 CAA 레코드가 저희 인증 기관을 허용하지 않습니다. 이 레코드를 추가하세요"가 훨씬 낫습니다. 생성 응답에 아직 검증 레코드가 없을 수 있으니 잠시 후 호스트네임을 다시 조회하세요. Cloudflare의 [웹훅 알림](https://developers.cloudflare.com/cloudflare-for-platforms/cloudflare-for-saas/security/certificate-management/webhook-definitions/)은 검증 및 발급 이벤트를 알려주므로 폴링보다 낫습니다.
- **갱신 모니터링.** 인증서가 활성 상태가 아니거나 DNS가 더 이상 여러분을 가리키지 않는 호스트네임을 표시하는 일일 작업을 두면, 고객보다 먼저 팀이 문제를 알 수 있습니다.
- **정리.** 검증되지 않는 호스트네임과 떠난 고객의 호스트네임은 삭제하세요. 둘 다 삭제 전까지 요금이 청구됩니다.
- **테넌트 격리.** 데이터베이스에 있는 활성 호스트네임만으로 테넌트를 식별하세요. 테넌트에게 여러분 도메인의 서브도메인도 제공한다면, Vercel의 [도메인 문서](https://vercel.com/docs/platforms/multi-tenant-platforms/configuring-domains)에서 지적하듯 한 테넌트가 상위 도메인에 설정한 쿠키가 다른 테넌트에도 전달되므로 대시보드와 로그인은 별도의 도메인에 두세요.
- **지원 플레이북.** 각 오류를 누가 해결하는지 정리한 짧은 문서를 팀에 마련하세요. CNAME 누락, CAA, DNSSEC, SERVFAIL은 고객 몫이고, 토큰, CA 요청 제한, Worker 라우트는 여러분 몫입니다.

이런 작업은 Dardo가 [웹 앱 개발](https://dardo.studio/ko/services/web-app-development/)에서 하는 일이며, 커스텀 도메인 요청이 가장 많은 곳은 화이트 라벨 [고객 포털](https://dardo.studio/ko/services/client-portal-development/)입니다.

## 대안: Vercel과 Netlify

앱이 이미 다른 곳에서 운영 중이라면 두 호스팅 모두 고객 도메인을 지원하며, 2026년 10월 기준 각자 문서화된 한도가 있습니다.

|          | Cloudflare for SaaS                    | Vercel                                                                                                       | Netlify                                                                                                                      |
| -------- | -------------------------------------- | ------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------- |
| 도메인 한도   | 100개 포함, Free·Pro·Business는 최대 50,000개 | Hobby는 [프로젝트당 50개](https://vercel.com/docs/limits), Pro와 Enterprise는 "무제한"이며 소프트 한도는 각각 100,000개와 1,000,000개 | "사이트당 [도메인 별칭](https://docs.netlify.com/manage/domains/configure-domains/add-a-domain-alias/)은 50개 이하를 권장합니다"                |
| Apex 도메인 | Enterprise 부가 옵션                       | 프로젝트 도메인 카드에 표시된 값으로 [A 레코드](https://vercel.com/kb/guide/a-record-and-caa-with-vercel) 설정                    | [ALIAS, ANAME 또는 플래트닝된 CNAME](https://docs.netlify.com/manage/domains/configure-domains/configure-external-dns/), 대안으로 A 레코드 |
| 인증서      | 자동 발급, 호스트네임당 2개, 커스텀 인증서는 Enterprise  | 도메인 인증 후 자동 발급, 커스텀 인증서는 Enterprise                                                                          | [Let's Encrypt 자동 발급](https://docs.netlify.com/manage/domains/secure-domains-with-https/https-ssl/), 커스텀 인증서는 수동 갱신          |
| 와일드카드    | Enterprise                             | Vercel 네임서버 또는 위임된 \_acme-challenge 필요                                                                       | Netlify DNS를 사용하는 도메인은 자동                                                                                                    |
| 적합한 용도   | 하나의 존에 있는 다수의 고객 도메인                   | REST API와 SDK를 갖춘 [멀티테넌트 플랫폼](https://vercel.com/docs/platforms/multi-tenant-platforms/limits)               | 사이트당 많아야 수십 개의 도메인                                                                                                           |

가장 뚜렷한 차이는 Vercel의 apex 지원입니다. 고객이 A 레코드로 루트 도메인을 바로 연결할 수 있습니다. 다만 Vercel의 [공정 사용 가이드라인](https://vercel.com/docs/plans/hobby)에 따라 Hobby 요금제는 "non-commercial, personal use only"로 제한되므로, 유료 SaaS라면 Pro부터 시작해야 합니다. Netlify는 별칭 50개 권장 한도 때문에, 하나의 배포로 수백 개의 고객 도메인을 처리하기에는 적합하지 않습니다.

## 구축 시점

고객 두세 곳이 요청한다면 Cloudflare 대시보드에서 호스트네임을 직접 추가하고 체크리스트를 관리하세요. 커스텀 도메인이 판매하는 요금제나 화이트 라벨 상품의 일부가 되면 셀프 서비스 흐름을 구축하세요. 고객이 대규모로 루트 도메인이나 와일드카드를 필요로 한다면, 한도에 맞춰 설계하기 전에 Cloudflare에 Enterprise에 대해 문의하세요.

상태 표시, 알림, 지원 메모까지 갖춘 이 흐름을 제품에 직접 구현하고 싶다면 [앱에 대해 알려 주세요](https://dardo.studio/ko/contact/).

[Nicolás Cerón](https://dardo.studio/ko/studio/)

Nicolás Cerón은 콜롬비아 보고타에 있는 브랜드, 웹 디자인 및 개발 스튜디오 Dardo의 창립자입니다.

## 계속 둘러보세요.

- [서비스 · **웹 앱, SaaS, MVP 개발**](https://dardo.studio/ko/services/web-app-development/)

- [나의 프로젝트 · **상담 시작하기**](https://dardo.studio/ko/contact/)
