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:

  1. Bạn thêm domain vào Cloudflare → Cloudflare tạo một "zone" cho domain đó
  2. Cloudflare scan DNS records hiện tại → tự import các record A, CNAME, MX, TXT, etc.
  3. Bạn cập nhật nameserver tại registrar → trỏ về 2 nameserver Cloudflare cấp
  4. Sau 24h (hoặc sớm hơn) → DNS propagate, domain chính thức "qua tay" Cloudflare
  5. 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

  1. Vào dash.cloudflare.com → đăng nhập
  2. Click Add a domain (hoặc "Add site")
  3. Nhập apex domain: example.com (không có www, không có http)
  4. Chọn plan: Free là đủ cho hầu hết use case
  5. 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 ProfileAPI Tokens
  • Click Create Token → chọn template Edit zone DNS hoặc Zone Administrator
  • Permissions cần thiết:
  • Zone → Zone → Edit
  • Zone → 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


BKGlobal Tech Team

Blog Công nghệ

Xem tất cả