---
title: "用 Cloudflare 設定 SaaS 自訂網域:步驟、費用與限制 — Dardo"
description: "用 Cloudflare for SaaS 讓客戶在你的 SaaS 使用自己的網域:DNS 流程、憑證驗證、費用、apex 限制與替代方案。"
url: "https://dardo.studio/zh-Hant/blog/custom-domains-for-saas/"
language: "zh-Hant"
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/","ko":"https://dardo.studio/ko/blog/custom-domains-for-saas/","zh-Hans":"https://dardo.studio/zh-Hans/blog/custom-domains-for-saas/"}
updated: "2026-10-10T09:14:01.687Z"
---

[部落格](https://dardo.studio/zh-Hant/blog/)

# SaaS 自訂網域:用 Cloudflare for SaaS 讓客戶使用自己的網域

透過 Cloudflare for SaaS,讓客戶把自己的網域指向你的 SaaS:驗證如何運作、截至 2026 年 10 月的費用,以及哪些地方會出問題。

作者: [Nicolás Cerón](https://dardo.studio/zh-Hant/studio/) ·2026年10月10日

![夜晚街道上一排風格各異的店面,人行道下的剖面圖中,深紅色纜線將每間店連接到同一個共用機房。](https://dardo.studio/_astro/01M4GYDRFXRY8D1WBNX295F126_2nc9Aq.webp)

## 簡短回答

若要讓客戶用自己的網域(例如 `portal.customer.com`)來使用你的應用程式,你需要在 Cloudflare 的 zone 中將該網域註冊為自訂主機名稱(custom hostname)。客戶只要新增一筆指向你的 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 個主機名稱。

有兩項限制會影響所有設計。第一,客戶若要將根網域(`customer.com`)指向你,必須購買 Enterprise 付費附加元件。第二,萬用字元自訂主機名稱、自訂憑證以及憑證授權單位的選擇,都只限 Enterprise 方案。Cloudflare 的設定只需幾個步驟,圍繞它的產品工作則花費更多時間,本指南大部分內容也是在談這一塊。

## 什麼是自訂主機名稱

自訂主機名稱是客戶擁有的網域,由 Cloudflare 導入你的 zone。[設定指南](https://developers.cloudflare.com/cloudflare-for-platforms/cloudflare-for-saas/start/getting-started/)包含四個部分:

- **SaaS zone。**你自己放在 Cloudflare 上的網域,並已啟用 Cloudflare for SaaS。使用 Free 方案的 zone 即可開始。
- **後備來源(Fallback origin)。**一筆啟用代理的 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 驗證主機名稱的所有權。**CNAME 出現時會執行[即時驗證](https://developers.cloudflare.com/cloudflare-for-platforms/cloudflare-for-saas/domain-support/hostname-validation/realtime-validation/),這可能造成短暫停機。[預先驗證](https://developers.cloudflare.com/cloudflare-for-platforms/cloudflare-for-saas/domain-support/hostname-validation/pre-validation/)則在 DNS 變更前使用 TXT 記錄或 HTTP 權杖,適用於已上線的網域。若客戶自己的 zone 也在 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 記錄                    | 是         | 萬用字元主機名稱必須使用。                                               |
| 委派 DCV  | 一次性新增一筆 \_acme-challenge CNAME   | 是         | 讓 Cloudflare 能續期之後的每一張憑證。若已有 \_acme-challenge TXT 記錄,則無法使用。 |

驗證不會無限期等待。Cloudflare 會在七天內重試主機名稱驗證 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 請聯絡業務) |
| 萬用字元自訂主機名稱      | 否      | 否      | 否        | 是                    |
| 自訂憑證與可選擇的憑證授權單位 | 否      | 否      | 否        | 是                    |
| 根網域代理 / 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 強制執行門檻,超過後新的主機名稱會被拒絕。

## 哪些地方會出問題

### 根網域

Cloudflare 的設定指南說得很清楚:「預設情況下,不支援使用 A 記錄指向目標。」多數 DNS 供應商不允許在網域根部設定 CNAME,因此客戶需要使用子網域,例如 `www.customer.com` 或 `app.customer.com`。[Apex proxying](https://developers.cloudflare.com/cloudflare-for-platforms/cloudflare-for-saas/start/advanced-settings/apex-proxying/) 會為你的帳號分配固定的 IP 前綴,讓客戶可以使用 A 記錄,但這是企業版的加購項目,需另外付費。若沒有這項服務,請客戶改用子網域,並說明如何在他們的 DNS 供應商處將根網域轉址到該子網域。

### 憑證授權機構與 CAA 記錄

Cloudflare 的[憑證授權機構參考文件](https://developers.cloudflare.com/ssl/reference/certificate-authorities/)列出自訂主機名稱可使用的 CA:Let's Encrypt(90 天憑證)、Google Trust Services 與 SSL.com(14、30 或 90 天)。只有企業版可以自行選擇 CA;其他方案則由 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 設定錯誤,以及 DNS 伺服器回應 SERVFAIL。

### 續期

自訂主機名稱的憑證效期為 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,該主機名稱仍可能繼續導向你的服務。

### 驗證路徑前方的 Worker

如果 Worker 是你的備援來源,就必須將 `/.well-known/pki-validation/*` 與 `/.well-known/acme-challenge/*` 原封不動地放行。若有全部攔截的路由回應你應用程式的 404 頁面,HTTP 驗證就會失敗。

## 周邊的產品工作

- **方案限制。**決定哪些方案包含自訂網域、數量多少,並在呼叫 Cloudflare 之前先檢查。Cloudflare 的配額和門檻只是上限,並不是你的定價。
- **引導畫面。**只放一個輸入欄位。轉成小寫,去除通訊協定與路徑,除非你已購買 apex proxying,否則拒絕純根網域,並拒絕你自己的 zone 名稱,Cloudflare 明確表示絕不要將它建立為自訂主機名稱。接著顯示需要新增的確切記錄,並附上複製按鈕。
- **用白話呈現兩種狀態。**主機名稱與憑證是分別驗證的,所以兩者都要顯示。將 `ssl.validation_errors` 轉成操作說明:「您網域的 CAA 記錄不允許我們的憑證授權機構,請新增這筆記錄」比「pending\_validation」好得多。建立回應可能尚未包含驗證記錄,所以請稍等片刻後再重新取得主機名稱。Cloudflare 的 [webhook 通知](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)指出,某個租戶為上層網域設定的 cookie 會傳到其他租戶,因此請將你的後台與登入頁放在獨立的網域。
- **支援手冊。**為團隊準備一頁簡短的說明,將每種錯誤對應到由誰處理:缺少 CNAME、CAA、DNSSEC 與 SERVFAIL 由客戶處理;權杖、CA 速率限制與 Worker 路由則由你處理。

這正是 Dardo 在[網頁應用程式開發](https://dardo.studio/zh-Hant/services/web-app-development/)中會做的工作,而自訂網域最常被要求的場景,就是白標[客戶入口網站](https://dardo.studio/zh-Hant/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 為「Unlimited」,軟性上限分別為 100,000 與 1,000,000 | 「We recommend assigning no more than [50 domain aliases](https://docs.netlify.com/manage/domains/configure-domains/add-a-domain-alias/) to a site」 |
| 根網域    | 企業版加購項目                                    | 使用 [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 記錄作為備案                            |
| 憑證     | 自動簽發,每個主機名稱兩張;自訂憑證需企業版                     | 網域驗證後自動簽發;自訂憑證需 Enterprise                                                                                    | [自動使用 Let's Encrypt](https://docs.netlify.com/manage/domains/secure-domains-with-https/https-ssl/);自訂憑證需手動續期                                       |
| 萬用字元   | 企業版                                        | 需使用 Vercel 名稱伺服器,或委派 \_acme-challenge                                                                         | 使用 Netlify DNS 的網域可自動支援                                                                                                                            |
| 適用情境   | 單一 zone 下有大量客戶網域                           | 具備 REST API 與 SDK 的[多租戶平台](https://vercel.com/docs/platforms/multi-tenant-platforms/limits)                   | 每個網站最多幾十個網域                                                                                                                                        |

Vercel 對根網域的支援是最明顯的差異:客戶可以用 A 記錄將純網域指向它。請注意,依據 Vercel 的[合理使用準則](https://vercel.com/docs/plans/hobby),Hobby 方案僅限「non-commercial, personal use only」,所以收費的 SaaS 應從 Pro 起步。Netlify 建議 50 個別名的上限,使它不適合用單一部署服務數百個客戶網域。

## 何時該著手開發

如果只有兩三位客戶提出需求,就在 Cloudflare 後台新增他們的主機名稱,並維護一份檢查清單。當自訂網域成為你銷售方案的一部分,或白標服務的一環時,再建立自助流程。如果客戶需要大規模的純根網域或萬用字元,請在圍繞這些限制進行設計之前,先與 Cloudflare 洽談企業版。

如果你想把這套流程直接整合進自己的產品,包含上述的狀態顯示、通知提醒與客服備註,歡迎[跟我們聊聊你的應用程式](https://dardo.studio/zh-Hant/contact/)。

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

Nicolás Cerón 是 Dardo 的創辦人。Dardo 是一間位於哥倫比亞波哥大的品牌、網頁設計與開發工作室。

## 繼續探索。

- [服務 · **網頁應用程式、SaaS 與 MVP 開發**](https://dardo.studio/zh-Hant/services/web-app-development/)

- [您的專案 · **開始聊聊**](https://dardo.studio/zh-Hant/contact/)
