Hướng dẫn cài đặt và áp dụng Cloudflare cho nhiều website, domain cùng lúc
Quản lý 1 domain trên Cloudflare thì dễ. Quản lý 10–50 domain thì cần script. Bài này hướng dẫn từng bước: thêm domain thủ công qua dashboard, tự động hoá qua Cloudflare API với bash script, cấu hình DNS/SSL đúng cách, và những lưu ý quan trọng để tránh downtime. ---
Vấn đề
Bạn có một danh sách domain - có thể là 5, 10, hoặc vài chục - cần chuyển hết sang Cloudflare để hưởng các tính năng như CDN, DDoS protection, SSL miễn phí, và Page Rules. Làm từng cái một qua dashboard thì được, nhưng mất thời gian và dễ sót bước. Thao tác lặp đi lặp lại, dễ nhầm nameserver giữa các domain, và nếu có lỗi thì khó trace.
Chúng tôi đã gặp đúng tình huống này khi cần onboard hàng loạt domain của khách hàng lên Cloudflare trong một sprint ngắn. Dưới đây là cách team xử lý - từ bước chuẩn bị đến verify xong xuôi.
Giải thích: Cloudflare hoạt động thế nào với domain của bạn
Trước khi bắt tay vào làm, cần hiểu một flow cơ bản:
- Bạn thêm domain vào Cloudflare → Cloudflare tạo một "zone" cho domain đó
- Cloudflare scan DNS records hiện tại → tự import các record A, CNAME, MX, TXT, etc.
- Bạn cập nhật nameserver tại registrar → trỏ về 2 nameserver Cloudflare cấp
- Sau 24h (hoặc sớm hơn) → DNS propagate, domain chính thức "qua tay" Cloudflare
- Cloudflare bật SSL, proxy, cache → tính năng bảo vệ và tăng tốc hoạt động
Bước quan trọng nhất: nameserver phải chính xác tuyệt đối. Sai một ký tự là domain không resolve được.
Cách 1: Thêm thủ công qua dashboard (phù hợp 1–5 domain)
Nếu số lượng domain ít, cách nhanh nhất là thao tác trực tiếp trên Cloudflare dashboard.
Bước 1: Chuẩn bị
Trước khi thêm domain vào Cloudflare, làm ngay bước này để tránh conflict sau:
☐ Tắt DNSSEC tại registrar (GoDaddy, Namecheap, tenten.vn, etc.)
☐ Export toàn bộ DNS records hiện tại ra file (backup)
☐ Liệt kê tất cả subdomain đang dùng: www, api, mail, staging, ...
Tại sao phải tắt DNSSEC trước? Nếu để DNSSEC bật, khi đổi nameserver sang Cloudflare sẽ gây lỗi DNSSEC validation, khiến domain không resolve được trong thời gian propagation. Sau khi domain đã Active trên Cloudflare, bạn có thể bật lại DNSSEC qua Cloudflare dashboard.
Bước 2: Thêm domain vào Cloudflare
- Vào dash.cloudflare.com → đăng nhập
- Click Add a domain (hoặc "Add site")
- Nhập apex domain:
example.com(không cówww, không cóhttp) - Chọn plan: Free là đủ cho hầu hết use case
- Cloudflare sẽ tự scan và import DNS records
Bước 3: Kiểm tra DNS records
Đây là bước nhiều người bỏ qua và hối hận. Sau khi scan, hãy verify:
| Record type | Cần check gì |
|---|---|
| A / AAAA | Root domain trỏ đúng IP server chưa? |
| CNAME | www, api, staging, etc. đúng chưa? |
| MX | Email routing không bị mất? |
| TXT | SPF, DKIM, DMARC còn nguyên không? |
Nếu Cloudflare scan thiếu record nào, thêm thủ công trước khi chuyển nameserver.
Bước 4: Đổi nameserver tại registrar
Cloudflare sẽ cấp cho domain của bạn 2 nameserver, ví dụ:
aria.ns.cloudflare.com
ken.ns.cloudflare.com
Vào registrar (GoDaddy, Namecheap, tenten.vn, v.v.), tìm phần DNS / Nameservers, xoá nameserver cũ, điền đúng 2 nameserver Cloudflare vừa cấp.
Lưu ý: Mỗi domain trong cùng một account Cloudflare có thể được cấp nameserver khác nhau. Không copy-paste nameserver từ domain này sang domain kia.
Bước 5: Chờ propagation và verify
- Propagation thường mất từ vài phút đến 24 giờ
- Cloudflare gửi email xác nhận khi domain chuyển sang trạng thái Active
- Verify thủ công:
# Trên macOS/Linux
dig ns example.com @1.1.1.1
# Trên Windows
nslookup -type=ns example.com 1.1.1.1
Kết quả trả về nameserver của Cloudflare → thành công.
Hoặc dùng web tool: whatsmydns.net để check propagation toàn cầu.
Cách 2: Tự động hoá qua Cloudflare API (dành cho 5+ domain)
Khi số lượng domain lớn, làm thủ công không thực tế. Cloudflare cung cấp API đầy đủ - chúng tôi dùng bash script để bulk add.
Chuẩn bị API credentials
1. Tạo API Token:
- Vào Cloudflare dashboard → My Profile → API Tokens
- Click Create Token → chọn template Edit zone DNS hoặc Zone Administrator
- Permissions cần thiết:
Zone → Zone → EditZone → DNS → Edit
2. Lấy Account ID:
- Vào dashboard → chọn bất kỳ domain → xem URL:
dash.cloudflare.com//... - Hoặc vào Overview của account → sidebar bên phải có Account ID
Script bash: bulk add domains
Tạo file domains.txt chứa danh sách domain, mỗi dòng một domain:
example1.com
example2.vn
mybrand.net
client-site.io
Tạo script add-multiple-zones.sh:
#!/bin/bash
API_TOKEN="your_api_token_here"
ACCOUNT_ID="your_account_id_here"
for domain in $(cat domains.txt); do
echo "=== Adding: $domain ==="
response=$(curl -s -X POST https://api.cloudflare.com/client/v4/zones \
--header "Authorization: Bearer ${API_TOKEN}" \
--header "Content-Type: application/json" \
--data "{
\"account\": {
\"id\": \"${ACCOUNT_ID}\"
},
\"name\": \"${domain}\",
\"type\": \"full\"
}")
# Parse success/error
success=$(echo $response | python3 -c "import sys,json; d=json.load(sys.stdin); print(d['success'])")
if [ "$success" = "True" ]; then
zone_id=$(echo $response | python3 -c "import sys,json; d=json.load(sys.stdin); print(d['result']['id'])")
ns=$(echo $response | python3 -c "import sys,json; d=json.load(sys.stdin); print('\n'.join(d['result']['name_servers']))")
echo "✓ Added: $domain"
echo " Zone ID: $zone_id"
echo " Nameservers:"
echo "$ns" | sed 's/^/ /'
else
errors=$(echo $response | python3 -c "import sys,json; d=json.load(sys.stdin); print(d['errors'])")
echo "✗ Failed: $domain → $errors"
fi
echo ""
# Rate limit: max 25 domains / 10 phút
# Thêm delay nếu batch lớn
sleep 2
done
echo "=== Done ==="
Chạy script:
chmod +x add-multiple-zones.sh
bash add-multiple-zones.sh | tee results.log
Output mẫu:
=== Adding: example1.com ===
✓ Added: example1.com
Zone ID: abc123def456...
Nameservers:
aria.ns.cloudflare.com
ken.ns.cloudflare.com
=== Adding: example2.vn ===
✓ Added: example2.vn
Zone ID: xyz789...
Nameservers:
brad.ns.cloudflare.com
zara.ns.cloudflare.com
Lưu file results.log lại - đây là nguồn để bạn đổi nameserver tại từng registrar.
Rate limits cần biết
| Giới hạn | Giá trị |
|---|---|
| Max domains mỗi 10 phút | 25 domains |
| Max pending zones | 50 domains |
| Nếu vượt pending limit | Bị block - phải chờ domain cũ active rồi mới thêm tiếp |
Nếu bạn có 100+ domain, chia ra batch 20–25, chạy xong một batch thì chờ vài tiếng cho nameserver propagate, rồi chạy batch tiếp theo.
Sau khi thêm domain: cấu hình cần làm ngay
SSL/TLS Mode
Cloudflare hỗ trợ 4 chế độ SSL. Chọn đúng để tránh lỗi mixed content hoặc redirect loop:
| Mode | Khi nào dùng |
|---|---|
| Flexible | Server không có SSL - Cloudflare mã hoá client↔CF, CF↔server là HTTP. Không khuyến nghị cho production. |
| Full | Server có SSL (dù self-signed). Khuyến nghị cho hầu hết trường hợp. |
| Full (Strict) | Server có SSL cert hợp lệ từ CA. Bảo mật nhất. |
| Off | Không dùng SSL - tuyệt đối tránh. |
Vào SSL/TLS → Overview → chọn mode phù hợp cho từng domain.
Proxy status
DNS record trong Cloudflare có 2 trạng thái:
- Proxied (biểu tượng đám mây màu cam): traffic đi qua Cloudflare → có CDN, DDoS protection, SSL
- DNS only (đám mây xám): Cloudflare chỉ là DNS resolver, không proxy
Thông thường, bật Proxied cho www và root domain. Giữ DNS only cho các record như mail, ftp, hoặc server nội bộ.
Bật DNSSEC lại (tùy chọn)
Sau khi domain đã Active, bật DNSSEC qua:
DNS → Settings → DNSSEC → Enable
Cloudflare sẽ cấp DS record - bạn cần thêm DS record này vào registrar.
Best practices từ kinh nghiệm thực tế
1. Luôn backup DNS records trước khi đổi nameserver. Export full zone file từ DNS provider cũ. Nếu Cloudflare scan thiếu record nào, bạn có bản gốc để thêm lại.
2. Đổi nameserver ngoài giờ cao điểm. Dù propagation nhanh, vẫn có risk ngắt kết nối ngắn. Làm vào ban đêm hoặc cuối tuần.
3. Dùng TTL thấp trước khi đổi. Giảm TTL các record quan trọng xuống 300s (5 phút) trước khi đổi nameserver. Nếu có lỗi, rollback nhanh hơn.
4. Đọc kỹ nameserver từng domain. Cloudflare assign nameserver khác nhau cho từng domain - ngay cả trong cùng account. Không dùng chung.
5. Monitor sau khi đổi. Dùng UptimeRobot hoặc Better Uptime để monitor các domain sau khi đổi. Nhận alert ngay nếu có downtime.
6. Không vội bật tất cả tính năng ngay. Verify domain active và trỏ đúng IP trước. Sau đó mới bật thêm Page Rules, WAF, Cache Rules.
Tổng kết
| Số lượng domain | Cách làm |
|---|---|
| 1–5 domain | Thêm thủ công qua dashboard - nhanh và dễ kiểm soát |
| 5–50 domain | Bash script + Cloudflare API - tự động hoá, lưu log để trace |
| 50+ domain | Chia batch, chú ý rate limit 25 domain/10 phút và 50 pending limit |
Cloudflare free plan là đủ cho hầu hết use case cơ bản: DNS, CDN, DDoS protection mức cơ bản, SSL. Nếu cần custom nameserver, WAF nâng cao, hay SLA, mới cần nâng lên Business/Enterprise.
Bài tiếp theo chúng tôi sẽ đi sâu vào Cloudflare Page Rules và Transform Rules - cách dùng để redirect nhiều domain về một domain chính, cấu hình cache strategy, và một số pattern hay gặp khi quản lý multi-domain.
Tham khảo
- Cloudflare - Add multiple sites via automation
- Cloudflare - Onboard a domain
- Cloudflare - Change nameservers (Full setup)
- Cloudflare - DNS zone setups
- Cloudflare - Nameserver options
BKGlobal Tech Team