買一個 domain 等於擁有無限個 subdomain






買一個 domain dawsonwang.com,你就擁有「無限個」subdomain。sdd.dawsonwang.com、blog.dawsonwang.com、api.dawsonwang.com——全部算同一個地址底下的不同入口,不用另外買,不用另外申請。
如果你跟著 Day 137 蓋了自己的網站,今天這篇接著教你怎麼把第二個、第三個服務也掛上去——不用再買新網址。
透過 Vercel + Cloudflare,瞬間就把 Day 134 做的 iPAS 證照練習網站掛到 https://ipas.dawsonwang.com/
這次我把第二個服務掛上 Vercel 的時候,整個流程不用五分鐘(我自己這次大概 1 分鐘搞定),完全沒碰指令。對比我以前在 VPS(租來的一台 24 小時不關機的伺服器)上裝 nginx(傳統的網站伺服器軟體)+ Let's Encrypt(免費的 SSL 憑證)的日子,現在有手就行。
設定流程前先建立一個概念:DNS 就是網際網路的電話簿——你輸入網址,它告訴瀏覽器去哪台機器找。下面要做的就是去電話簿加幾條記錄。
五分鐘設定 Vercel + Cloudflare subdomain
- 進 Vercel project → Settings → Domains
- 點 Add Existing,輸入要用的 subdomain,例如 ipas.dawsonwang.com
- Vercel 偵測到這個 domain 託管在 Cloudflare,自動跳轉過去要求授權
- Cloudflare 顯示要加的 DNS records,按授權
- 等 DNS 生效(通常幾分鐘),HTTPS 自動配好
Cloudflare 授權頁長這樣:
Type Name Content TTL
TXT _vercel vc-domain-verify=ipas.dawsonwang.com,.... 10 min
CNAME ipas 296a...vercel-dns-017.com 10 min
兩條記錄各自做的事:
- TXT 給 Vercel 驗證「你真的擁有這個 domain」
- CNAME 把 ipas 這個 subdomain 指到 Vercel 的伺服器
授權之後,Vercel 自動幫你拉 SSL 憑證(網址前面那個鎖頭)、自動 renew,全部免設定。
為什麼新做法快這麼多?(對比舊的 nginx + Let's Encrypt 流程)
對比之前自架網站的流程:
- 開一台 VPS(DigitalOcean / Linode / Vultr…)
- 裝 nginx
- 用 certbot 跑 Let's Encrypt 拿 SSL 憑證
- 登入 DNS 後台(GoDaddy 或 Cloudflare),加一筆 A record,把 subdomain 指到 VPS 的 IP
- nginx 寫 server block,根據 server_name 路由到對應後端
- 憑證每 90 天 renew,設 certbot 排程
- VPS 還要 patch、防火牆要顧
不是不能用,是要管的東西多很多。每加一個 subdomain,就是再寫一份 nginx config、再跑一次 certbot。
順便科普:CNAME、AAAA、A records 是什麼
DNS 就像網際網路的電話簿:你輸入 ipas.dawsonwang.com,它去查「這個名字對應到什麼」。對應的「另一邊」可以是 IP、可以是另一個 domain、也可以是純文字——所以 DNS 記錄分了好幾種。
日常會碰到的主要這四種:
| 類型 | 把什麼,指到什麼 | 範例 |
|---|---|---|
| A | 一個名字 → 一個 IPv4 位址 | ipas.dawsonwang.com → 12.34.56.78 |
| AAAA | 一個名字 → 一個 IPv6 位址 | ipas.dawsonwang.com → 2001:db8::1 |
| CNAME | 一個名字 → 另一個名字 | ipas.dawsonwang.com → 296a....vercel-dns-017.com |
| TXT | 一個名字 → 一段純文字 | _vercel → "vc-domain-verify=..." |
A 和 AAAA 是同類,差別只在 IP 版本——A 是 IPv4(像 12.34.56.78),AAAA 是 IPv6(像 2001:db8::1)。VPS 拿到的 IP 通常是 IPv4,就用 A。要同時支援 IPv6 用戶端,再加一筆 AAAA。
CNAME 是「我不寫死 IP,請去查另一個名字」。Vercel、Netlify、CDN 服務都用 CNAME,因為他們伺服器的 IP 會輪替——你的 CNAME 指到他們給的 domain,他們內部自己解析最新 IP,你不用跟著改。
TXT 是「給機器讀的一段純文字」,最常用在驗證擁有權。Vercel 那條 vc-domain-verify=...,就是 Vercel 去查這個 TXT 的內容對不對,對得起來代表這個 domain 真的是你的。
回頭看兩段流程其實在做同一件事:
- 舊 nginx 流程:手動在 GoDaddy 或 Cloudflare 加一筆 A record,把 subdomain 指到 VPS 的固定 IP
- 新 Vercel 流程:Vercel 透過 Cloudflare API,自動加一筆 CNAME(指到 Vercel 的 domain)+ 一筆 TXT(驗證擁有權)
差別只是「誰來寫、寫哪一種記錄」。
兩種做法怎麼選
| 面向 | nginx + Let's Encrypt | Vercel + Cloudflare |
|---|---|---|
| 設定速度 | 一小時起跳 | 五分鐘 |
| SSL 憑證 | 手動裝 certbot、自己設 renew | 自動 |
| 加一個 subdomain | 寫 config、拉憑證、reload | 點 Add Existing |
| 客製化空間 | nginx 能做的都能做 | 限制在 Vercel 框架內 |
| 成本 | VPS $5/月起 | Vercel 個人方案免費 |
| 適合場景 | 自管後端 | Next.js / Vite / Astro 前端 |
三條路你挑:
- Vercel + Cloudflare:這篇示範的做法,五分鐘自己點完,完全不用碰指令
- 找個會的朋友幫你掛:你連後台都不想點,請朋友吃頓飯比較快
- 自架 nginx + VPS:你已經是工程師,要跑 Python / Go 服務、自架資料庫、寫複雜路由規則
順便:學會看 domain 和 subdomain,防詐用得到
懂這個結構,日常被釣魚連結騙的機率會少一大半。
一個網址的真正擁有者,看的不是「最左邊」,是「最右邊那段品牌名 + .com / .tw / .me 之類的結尾」。從網址右邊往左讀,第一個有意義的品牌名加上那個結尾,那才是真正的 domain。
正常情況:
- sdd.dawsonwang.com → 擁有者是 dawsonwang.com
- mail.google.com → 擁有者是 google.com
- shop.line.me → 擁有者是 line.me
詐騙網址常用的招:
1. 把品牌名塞進 subdomain 或路徑
- paypal.scam-site.xyz → 擁有者是 scam-site.xyz,不是 paypal
- apple.id-verify.tw → 擁有者是 id-verify.tw
2. 改一個字(俗稱 typosquatting)
- goog1e.com(1 替代 l)
- paypa1.com(1 替代 l)
- facebok.com(少一個 o)
3. 同形字攻擊
- аpple.com(俄文 а,肉眼分不出來)
- gооgle.com(俄文 о)
4. 手機網址截斷
- 你看到的是「mail.google.com…」,後面其實接著「.evil-site.tw」
下次點銀行、社群、金流連結之前,做一件事:從網址最右邊往左讀,找到第一個品牌名 + .com / .tw / .me…,那才是真正的擁有者。不認識就別點。
想看怎麼從零蓋起第一個網站,回去看 Day 137(https://dawsonwang.com/day/137);想看掛在 ipas.dawsonwang.com 上的 iPAS 證照練習站怎麼做的,回去看 Day 134(https://dawsonwang.com/day/134)。
買一個 domain,能變出無限個 subdomain。看懂這個結構,你既能蓋自己的網站,也不會被詐騙網址唬住。