Dùng Cloudflare cho VPS: cấu hình SSL, DNS, IP thật đúng cách
Hướng dẫn dùng Cloudflare cho VPS - chế độ SSL Full (strict), bản ghi nào bật proxy, lấy IP thật của khách, tránh lỗi chuyển hướng vô hạn và lộ IP gốc.

Ý chính
- Chỉ bản ghi A, AAAA và CNAME mới bật proxy Cloudflare được; MX, TXT và lưu lượng mail, SSH luôn đi thẳng tới server.
- Hãy dùng chế độ SSL Full (strict) với chứng chỉ hợp lệ trên VPS; chế độ Flexible cộng với chuyển hướng HTTPS ở server gây lỗi chuyển hướng vô hạn.
- Cloudflare mặc định không cache HTML, nên page cache ở server vẫn là thứ giảm tải chính.
- Sau khi bật proxy, server phải lấy IP khách từ header CF-Connecting-IP, nếu không log và Fail2ban chỉ thấy IP của Cloudflare.
Dùng Cloudflare cho VPS nghĩa là chuyển nameserver của tên miền sang Cloudflare, bật proxy (đám mây màu cam) cho bản ghi của website, đặt chế độ SSL là Full (strict) với chứng chỉ hợp lệ trên server, để các bản ghi mail và panel ở chế độ DNS only, rồi cấu hình server nhận IP thật của khách qua header CF-Connecting-IP. Làm đúng năm việc đó, bạn có CDN, chống DDoS và SSL ở biên miễn phí mà không phá mail hay chứng chỉ.
Bài này giải thích Cloudflare làm được gì và không làm được gì cho một VPS hosting, các bước thiết lập, những lỗi kinh điển (vòng lặp chuyển hướng, lộ IP gốc, Fail2ban chặn nhầm Cloudflare) và cách làm cùng việc đó trên server chạy ZoPanel.
Cloudflare giúp gì cho VPS, và không giúp gì?
Khi một bản ghi được bật proxy, Cloudflare trả về IP anycast của họ thay vì IP của VPS. Khách kết nối tới Cloudflare, Cloudflare kết nối tới server của bạn. Ở vị trí đó, Cloudflare có thể:
- Chống DDoS và lọc bot trước khi lưu lượng chạm tới VPS. Theo trang gói dịch vụ của Cloudflare, gói Free có chống DDoS không giới hạn, chứng chỉ Universal SSL và bộ luật WAF được quản lý miễn phí (tại thời điểm viết bài, tháng 10/2026; hãy kiểm tra lại trang của họ).
- Cache file tĩnh (ảnh, CSS, JS, font) ở các điểm gần khách.
- Che IP gốc của server, nếu bạn không để lộ nó ở chỗ khác.
Những điều Cloudflare không làm, hay bị hiểu nhầm:
| Hiểu nhầm | Thực tế |
|---|---|
| "Cloudflare cache cả website" | Theo tài liệu cache của Cloudflare, mặc định họ không cache HTML hay JSON, chỉ cache theo phần mở rộng file tĩnh. Trang WordPress vẫn chạy PHP ở server cho mỗi lượt xem. |
| "Bật Cloudflare là mail cũng được bảo vệ" | Chỉ bản ghi A, AAAA, CNAME được proxy. MX và TXT luôn là DNS only; SMTP, IMAP, SSH đi thẳng tới server. |
| "Panel trên cổng 8888 cũng đi qua Cloudflare" | Cloudflare chỉ proxy một danh sách cổng cố định (HTTPS: 443, 2053, 2083, 2087, 2096, 8443). Cổng 8888 không nằm trong đó, nên tên miền panel phải để DNS only. |
| "Có Cloudflare thì không cần SSL trên server" | Chế độ Flexible mã hoá đoạn khách - Cloudflare nhưng đoạn Cloudflare - server đi HTTP thuần. Đó không phải HTTPS thật sự. |
Các bước dùng Cloudflare cho VPS
Bước 1: Thêm tên miền và kiểm tra bản ghi được nhập
Tạo tài khoản Cloudflare, thêm tên miền. Cloudflare quét và nhập các bản ghi DNS hiện có. Đừng tin bước quét này hoàn toàn: đối chiếu từng bản ghi với nhà cung cấp DNS cũ, đặc biệt MX, SPF, DKIM (thường là <selector>._domainkey), DMARC và các subdomain ít dùng. Thiếu một bản ghi DKIM là mail bắt đầu vào spam mà không ai hiểu vì sao.
Bước 2: Quyết định bản ghi nào bật proxy
| Bản ghi | Proxy | Lý do |
|---|---|---|
@, www (website) |
Bật (cam) | Lưu lượng web, hưởng lợi CDN và chống DDoS |
| Subdomain website khác | Bật | Như trên |
mail, hostname của mail server |
DNS only (xám) | SMTP, IMAP không đi qua proxy được |
| Tên miền panel (cổng 8888) | DNS only | Cổng không được Cloudflare hỗ trợ |
ftp, ssh hoặc bản ghi dùng cho dịch vụ không phải HTTP |
DNS only | Như trên |
| MX, TXT | Luôn DNS only | Cloudflare không cho proxy các loại này |
Bước 3: Đổi nameserver tại nhà đăng ký
Cloudflare cho bạn hai nameserver. Đăng nhập nhà đăng ký tên miền, thay nameserver cũ bằng hai cái này. Việc đổi có thể mất từ vài phút tới vài giờ để có hiệu lực. Nếu tên miền đang bật DNSSEC ở nhà cung cấp cũ, hãy tắt DNSSEC (xoá bản ghi DS ở nhà đăng ký) trước khi đổi, rồi bật lại trong Cloudflare sau, nếu không resolver sẽ coi tên miền là hỏng.
Bước 4: Chọn chế độ SSL đúng
Cloudflare có các chế độ Off, Flexible, Full, Full (strict) và Strict, cùng chế độ tự động chọn. Theo tài liệu SSL của Cloudflare, Full (strict) kiểm tra chứng chỉ của server và là chế độ họ khuyên dùng. Để dùng được, VPS phải có một trong hai:
- Chứng chỉ Let's Encrypt như bình thường. Trình duyệt tin nó, nên nếu sau này bạn tắt proxy, website vẫn chạy HTTPS.
- Cloudflare Origin CA certificate: tạo trong dashboard Cloudflare, bạn chọn thời hạn khi tạo. Chứng chỉ này chỉ Cloudflare tin, trình duyệt thì không, nên tắt proxy là khách thấy cảnh báo. Cloudflare cũng không gửi thông báo khi nó sắp hết hạn, bạn phải tự ghi nhớ.
Tránh Flexible. Ngoài việc đoạn tới server không mã hoá, nó còn là nguyên nhân số một của lỗi ERR_TOO_MANY_REDIRECTS: Cloudflare gọi server bằng HTTP, server chuyển hướng sang HTTPS, Cloudflare lại gọi bằng HTTP, cứ thế mãi.
Bước 5: Cho server biết IP thật của khách
Sau khi bật proxy, mọi request tới server đều đến từ IP của Cloudflare. Hệ quả: log truy cập vô dụng, giới hạn tốc độ tính chung cho mọi người, và tệ nhất là Fail2ban có thể chặn IP của Cloudflare, làm website sập với một phần lớn khách.
Với nginx làm tay, dùng module realip. Danh sách dải IP lấy từ cloudflare.com/ips (có bản text tại https://www.cloudflare.com/ips-v4 và ips-v6):
# /etc/nginx/conf.d/cloudflare-realip.conf
# Mỗi dải IP của Cloudflare một dòng, lấy từ cloudflare.com/ips
set_real_ip_from 173.245.48.0/20;
# ... các dải còn lại, cả IPv4 và IPv6 ...
real_ip_header CF-Connecting-IP;
Chỉ tin header này từ dải IP của Cloudflare. Nếu tin từ mọi nguồn, ai cũng giả được IP bằng cách tự gửi header. Dải IP thỉnh thoảng thay đổi, nên hãy có lịch kiểm tra lại.
Bước 6 (tuỳ chọn): Chỉ cho Cloudflare vào cổng web
Khi IP gốc đã bị lộ (rất hay xảy ra, xem phần dưới), kẻ tấn công có thể bỏ qua Cloudflare và đánh thẳng vào server. Bạn có thể giới hạn cổng 80/443 chỉ nhận kết nối từ dải IP của Cloudflare:
for ip in $(curl -fsS https://www.cloudflare.com/ips-v4); do
sudo ufw allow from "$ip" to any port 80,443 proto tcp
done
# sau khi kiểm tra kỹ, xoá luật mở 80/443 cho mọi IP:
sudo ufw status numbered
Cẩn thận: việc này làm hỏng mọi website trên cùng server mà không đi qua Cloudflare, và cần cập nhật khi Cloudflare đổi dải IP. Chỉ làm khi mọi website trên server đều đứng sau proxy.
Bước 7: Cache và tối ưu
Mặc định Cloudflare đã cache file tĩnh, như vậy là đủ cho đa số website. Đừng vội tạo luật "Cache Everything" cho WordPress: nếu cấu hình sai, trang của người đã đăng nhập hoặc giỏ hàng có thể bị cache và hiện cho người khác. Page cache ở server, có cơ chế xoá khi nội dung đổi và tự bỏ qua người dùng đăng nhập, là cách giảm tải an toàn hơn. Trong phép đo của chúng tôi, page cache đưa một VPS 4 GB từ khoảng 100 lên khoảng 250 website WordPress (xem chi tiết).
Lỗi hay gặp: lộ IP gốc
Che IP chỉ có tác dụng nếu IP không bị lộ ở chỗ khác. Những nguồn lộ phổ biến:
- Bản ghi
mailtrỏ cùng IP với website. Bất kỳ ai tra MX đều thấy IP server. Nếu cần che IP thật sự, mail phải ở server khác, hoặc dùng dịch vụ mail riêng. - Header của email gửi đi thường chứa IP server gửi.
- Subdomain DNS only như
panel,ftp,devtrỏ cùng IP. - Lịch sử DNS: các dịch vụ tra cứu lịch sử DNS lưu IP cũ trước khi bạn bật Cloudflare.
Nếu IP đã lộ, Cloudflare vẫn giúp được với lưu lượng đi qua tên miền, nhưng đừng coi nó là lá chắn tuyệt đối. Firewall ở bước 6 và bảo mật VPS cơ bản vẫn cần thiết.
Dùng Cloudflare cho VPS chạy ZoPanel
ZoPanel không quản lý DNS trên Cloudflare, nhưng có sẵn những thứ cần để chạy sau Cloudflare đúng cách:
- Bật "Website đứng sau Cloudflare" trong Bảo mật. ZoPanel lấy IP khách từ header
CF-Connecting-IP, chỉ tin header này khi request đến từ dải IP của Cloudflare. Log, thống kê, giới hạn tốc độ và Fail2ban thấy đúng khách thật, không cần tự viết cấu hìnhrealip. - Chứng chỉ SSL. SSL tự động của ZoPanel chỉ chạy khi tên miền phân giải duy nhất về server, nên tên miền đang bật proxy sẽ không được tự cấp. Có ba cách: cấp chứng chỉ Let's Encrypt trước khi bật đám mây cam; bấm Cấp chứng chỉ trong tab SSL của website; hoặc dán Cloudflare Origin certificate vào Chứng chỉ riêng. Lưu ý chứng chỉ riêng sẽ tắt Tự gia hạn, và ZoPanel nhắc bạn khi còn 14 ngày hết hạn. Chi tiết ở tài liệu SSL.
- Bản ghi mail. Nếu DNS nằm ở Cloudflare, sao chép MX, SPF, DKIM và DMARC từ thẻ Bản ghi DNS ở trang Email sang Cloudflare, để chế độ DNS only, rồi bấm Kiểm tra trong thẻ Kiểm tra gửi/nhận mail để đối chiếu với DNS công khai.
- Tên miền panel (cổng 8888) để DNS only. Nếu muốn giới hạn ai vào được panel, dùng Giới hạn truy cập panel theo IP trong Cài đặt → Chung thay vì trông vào Cloudflare.
- Hai lớp WAF. Bộ luật của Cloudflare chặn ở biên; WAF ModSecurity với OWASP Core Rule Set của ZoPanel chặn ở server, kể cả request bỏ qua Cloudflare. Hai lớp không loại trừ nhau.
Một điểm cần biết: chứng chỉ wildcard qua ZoPanel yêu cầu DNS của tên miền nằm trên server ZoPanel (tài liệu DNS). Nếu DNS ở Cloudflare, dùng Origin certificate cho wildcard.
Kết luận
Cloudflare là lớp bổ sung tốt cho hầu hết VPS hosting: miễn phí, giảm lưu lượng file tĩnh, hấp thụ DDoS. Nhưng nó chỉ an toàn khi bạn dùng Full (strict), để mail và panel ngoài proxy, và cho server biết IP thật của khách. Còn hiệu năng thật sự của WordPress vẫn nằm ở server: page cache, PHP và database.
Nếu bạn muốn một panel đã có sẵn chế độ chạy sau Cloudflare, SSL tự động và page cache, hãy thử gói Free của ZoPanel (3 tài khoản hosting, 10 website, 10 database, không giới hạn thời gian; các tính năng trong bài này đều chạy trên Free) và xem bảng giá.
Câu hỏi thường gặp
Nên chọn chế độ SSL nào trên Cloudflare?
Full (strict), với chứng chỉ Let's Encrypt hoặc Cloudflare Origin certificate trên server. Flexible để đoạn Cloudflare - server không mã hoá và dễ gây vòng lặp chuyển hướng; Full không kiểm tra chứng chỉ server nên kém an toàn hơn.
Vì sao bật Cloudflare thì website bị lỗi "too many redirects"?
Gần như luôn do chế độ Flexible kết hợp với chuyển hướng HTTP sang HTTPS ở server: Cloudflare gọi server bằng HTTP, server chuyển sang HTTPS, lặp lại mãi. Cài chứng chỉ trên server rồi đổi sang Full (strict) là hết.
Cloudflare có cache trang WordPress không?
Mặc định là không: Cloudflare chỉ cache file tĩnh như ảnh, CSS, JS, không cache HTML. Mỗi lượt xem trang vẫn chạy PHP ở server, nên page cache ở server mới là thứ giảm tải chính.
Có bật proxy cho bản ghi mail được không?
Không. Cloudflare chỉ proxy lưu lượng HTTP/HTTPS của bản ghi A, AAAA, CNAME; MX và TXT luôn DNS only. Hostname mail server phải để DNS only, và vì vậy IP của server mail luôn công khai.
Dùng Cloudflare rồi có cần firewall trên VPS không?
Có. Cloudflare chỉ bảo vệ lưu lượng đi qua tên miền được proxy; SSH, mail, panel và mọi kết nối tới IP gốc đều đi thẳng tới server. Firewall, Fail2ban và cập nhật bảo mật vẫn là bắt buộc.
Đọc tiếp

Giới hạn tài nguyên hosting CPU, RAM: đặt bao nhiêu cho đúng?
Giới hạn tài nguyên hosting CPU, RAM, I/O, tiến trình, inode là gì, Linux áp dụng ra sao, và cách đặt gói hosting để một website không kéo sập cả server.

1 VPS chứa bao nhiêu website, bao nhiêu tài khoản hosting? Số đo thực tế
1 VPS chứa bao nhiêu website và tài khoản hosting, theo số đo trên VPS 4 GB, 3 GB, cùng cách ổ đĩa, mail, ứng dụng và overselling thay đổi con số.

VPS cho WordPress cấu hình bao nhiêu là đủ? Cách chọn CPU, RAM, ổ đĩa
VPS cho WordPress cấu hình bao nhiêu là đủ cho 1, 10 hay 100 website? Cách ước lượng CPU, RAM, ổ đĩa theo lưu lượng, kèm số liệu đo thực tế và lỗi cần tránh.