
Trả lời nhanh: Cả hai đều làm tốt vai reverse proxy, người gác cổng nhận mọi truy cập rồi chuyển vào đúng app bên trong. Khác nhau ở triết lý: Caddy tự động hết mức, HTTPS tự xin tự gia hạn, cấu hình 3 dòng cho một site; Nginx là tiêu chuẩn công nghiệp 20 năm, mạnh, nhanh, tài liệu vô tận, nhưng HTTPS phải tự ghép certbot và cấu hình dài nghi thức. Người bận rộn quản vài site trên VPS: Caddy. Hạ tầng lớn, cấu hình đặc thù, hoặc đội đã thuộc Nginx: Nginx. Đổi phe giữa chừng cũng dễ hơn bạn nghĩ.
Mọi VPS chạy web đều cần một người gác cổng: nhận cổng 80/443, phân phối theo tên miền vào các app, và lo chuyện HTTPS. Nginx thống trị vai này hai thập kỷ; Caddy đến sau với một câu hỏi xấc xược: "sao mọi thứ không tự động?". Bài này so hai phe bằng đúng các việc bạn sẽ làm trên VPS của mình.
- Reverse proxy = gác cổng: một IP nhận hết, chia theo tên miền vào từng app cổng nội bộ
- Caddy: HTTPS tự động 100%, Caddyfile 3 dòng/site, thời gian-đến-chạy-được ngắn nhất
- Nginx: hiệu năng đỉnh, cấu hình chi tiết vô hạn, mọi hướng dẫn trên mạng đều viết cho nó
- Chọn nhanh: mới + ít site → Caddy; kế thừa hệ cũ/cần tinh chỉnh sâu → Nginx
Cùng một việc, hai kiểu cấu hình
Bài toán: hai app trên một VPS, web chính cổng 3000, n8n cổng 5678, mỗi cái một tên miền, có HTTPS.
Caddy (/etc/caddy/Caddyfile, toàn bộ, không thiếu gì):
shop.vn {
reverse_proxy 127.0.0.1:3000
}
n8n.shop.vn {
reverse_proxy 127.0.0.1:5678
}Hết. Chứng chỉ HTTPS: Caddy tự xin từ Let's Encrypt khi khởi động, tự gia hạn mãi mãi, tự chuyển hướng HTTP→HTTPS, cấu hình TLS theo chuẩn tốt sẵn.
Nginx làm cùng việc: hai file server block ~25 dòng mỗi cái, cài thêm certbot, chạy certbot --nginx cho từng tên miền, tin vào cron gia hạn của nó. Không khó, chỉ là nhiều nghi thức hơn, và mỗi nghi thức là một chỗ để sai khi làm lúc nửa đêm.
Điểm mạnh thật của mỗi phe
- Caddy: HTTPS-tự-động là sát thủ tính năng; cấu hình đọc như văn nói; nén hiện đại (zstd) sẵn; reload không rớt kết nối; một binary Go không phụ thuộc. Với mô hình "một VPS nhiều site" của freelancer/self-hoster, tổng thời gian tiết kiệm mỗi năm tính bằng buổi.
- Nginx: hiệu năng trần cao và đều ở tải cực lớn; hệ tùy chỉnh sâu (rate limit tinh vi, cache tầng proxy, stream TCP/UDP); và lợi thế mạng lưới, gặp vấn đề gì, lời giải đã nằm sẵn trên mạng viết cho Nginx, mọi panel (aaPanel, CyberPanel...) đều sinh cấu hình Nginx. LiteSpeed/OpenLiteSpeed cùng họ nghi thức này, thế giới WordPress Việt quen nó.
Hiệu năng: sự thật ít kịch tính
Ở tải của tuyệt đại đa số VPS (vài trăm request/giây đổ lại), khác biệt Caddy-Nginx là vài phần trăm, không bao giờ là nút cổ chai của bạn; nút cổ chai thật nằm ở app, database, ổ đĩa phía sau. Nginx nhỉnh rõ ở biên: hàng chục nghìn kết nối đồng thời, static file cực lớn, tầm đó bạn đã có đội vận hành riêng và bài này không dành cho họ. Chọn proxy theo chi phí vận hành của chính bạn, không theo benchmark của Google.
Tình huống thực tế - chọn không cần day dứt
- VPS mới, dăm ba site/app, một mình quản: Caddy, các bài deploy trong cụm này đều dùng nó vì lý do đó.
- WordPress + LiteSpeed sẵn (như hosting Việt phổ biến): giữ nguyên hệ đang chạy, đừng đổi gác cổng của site đang sống chỉ vì bài so sánh.
- Panel tự động (Coolify/Dokploy): chúng tự quản proxy (Traefik), bạn khỏi chọn.
- Cần tính năng đặc thù (cache proxy phức tạp, luật rewrite di sản, stream): Nginx, độ sâu tùy chỉnh là sân của nó.
- Đang Nginx muốn thử Caddy: dựng song song trên port khác, chuyển một site thử, cấu hình 3 dòng nên chi phí thử gần bằng không.
Chọn theo tình huống, không cần day dứt
| Tình huống của bạn | Chọn | Vì sao |
|---|---|---|
| Một hoặc vài trang, muốn xong nhanh, chứng chỉ bảo mật tự lo | Caddy | Cấu hình ngắn, chứng chỉ tự cấp và tự gia hạn |
| Đã có sẵn cấu hình Nginx đang chạy tốt | Giữ Nginx | Không có lý do đổi |
| Cần cấu hình phức tạp: nhiều tầng chuyển tiếp, quy tắc viết lại địa chỉ tinh vi | Nginx | Tài liệu và ví dụ nhiều hơn hẳn |
| Đội chưa quen dòng lệnh, muốn ít thứ phải nhớ | Caddy | Ít khái niệm phải học hơn |
| Chạy sau một lớp cân bằng tải đã lo chứng chỉ | Cả hai đều được | Lợi thế tự cấp chứng chỉ không còn ý nghĩa |
| Cần tính năng của một mô đun bên thứ ba cụ thể | Kiểm mô đun đó hỗ trợ bên nào | Đây là yếu tố quyết định thật |
Cùng một việc, hai cách viết
# Caddy: toan bo cau hinh cho mot trang co chung chi bao mat
tenmien.vn {
reverse_proxy 127.0.0.1:3000
encode gzip
}
# Nginx: tuong duong, chua ke phan chung chi phai lo rieng
server {
listen 443 ssl;
server_name tenmien.vn;
ssl_certificate /etc/letsencrypt/live/tenmien.vn/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/tenmien.vn/privkey.pem;
gzip on;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}Bốn dòng đặt tiêu đề trong cấu hình bên dưới là bốn dòng hay bị quên, và thiếu chúng thì ứng dụng phía sau thấy sai địa chỉ người dùng và sai giao thức. Bên trên đặt sẵn các tiêu đề này.
Tự đo bằng wrk thay vì tin bảng số
# Tu do tren may cua ban thay vi tin bang so cua nguoi khac apt install -y wrk wrk -t4 -c100 -d30s https://tenmien.vn/ # Xem tai trong luc do top -bn1 | head -5
Trên phần lớn hệ thống vừa và nhỏ, khác biệt hiệu năng giữa hai lựa chọn này nhỏ hơn nhiều so với khác biệt do ứng dụng phía sau, do cơ sở dữ liệu và do ổ đĩa. Chọn theo thứ đội bạn vận hành được, không phải theo bảng đo của người khác.
Câu hỏi thường gặp
Reverse proxy có làm chậm site không?
Thêm một chặng nội bộ tính bằng phần trăm mili-giây, đổi lại HTTPS, nén, phân phối tên miền, che port nội bộ. Mọi kiến trúc web nghiêm túc đều có tầng này; không phải chỗ để tiết kiệm.
Caddy có chạy được WordPress/PHP không?
Được (php_fastcgi một dòng), nhưng hệ WordPress Việt tối ưu quanh LiteSpeed (cache plugin ăn khớp), site WordPress nghiêm túc nên theo hệ đó; Caddy tỏa sáng nhất với app Node/Go/自 host hiện đại.
Apache còn đáng học năm 2026 không?
Đáng biết-để-đọc vì di sản .htaccess khắp nơi, không đáng chọn cho hạ tầng mới, cặp Caddy/Nginx (và LiteSpeed cho WordPress) phủ hết nhu cầu hiện đại.
Đổi từ Nginx sang Caddy có rủi ro gì?
Chủ yếu là dịch các luật đặc thù (rewrite, header) sang cú pháp mới và kiểm lại từng site. Site ít luật lạ: một buổi tối. Có luật phức tạp: cân nhắc có đáng đổi không, Nginx đang chạy tốt không phải là vấn đề cần giải.
Bài viết liên quan
- Deploy Next.js lên VPS từ A-Z
- Cài n8n trên VPS bằng Docker: checklist chạy thật
- VPS ổ Enterprise U.2 NVMe RAID 10 tại TND
- Tailscale trong Docker lỗi TS_STATE, logged out: cách sửa
- Claude Code hay Codex CLI ngốn tài nguyên VPS hơn
- Hermes spawn subagent: chạy nhiều agent song song xử lý batch task
- Setup tmux cho freelancer làm 3 dự án song song trên 1 VPS
- Cài đặt VPS lần đầu: checklist 10 bước an toàn (security hardening)
- Termius mobile SSH vào VPS: vibe code từ điện thoại Android



