Luồng lưu lượng web qua container người dùng
Caddy là điểm vào của mọi lưu lượng web tới. Khi tên miền đầu tiên được thêm, Caddy tự động khởi động và bắt đầu lắng nghe trên cổng 80 (HTTP) và 443 (HTTPS).
Caddy chịu trách nhiệm:
- Chứng chỉ SSL và gia hạn
- Chuyển hướng (HTTP → HTTPS)
- Tường lửa ứng dụng web (CorazaWAF)
- Reverse proxy tới web server của người dùng
Web server riêng của từng người dùng
Mỗi người dùng chạy một phiên bản web server riêng, cách ly, trên một cổng cục bộ riêng. Các web server được hỗ trợ gồm:
- Nginx
- Apache
- OpenResty
- OpenLiteSpeed
- Varnish
Caddy chuyển yêu cầu tới đúng web server của người dùng, dựa trên cấu hình tên miền.
Container ứng dụng
Web server của người dùng sau đó chuyển tiếp yêu cầu vào các container ứng dụng, ví dụ:
- PHP-FPM (hỗ trợ nhiều phiên bản)
- Node.js
- Python / Django / Flask
- Container Docker
Ví dụ luồng cho một ứng dụng PHP:
Client → Caddy → Nginx → PHP-FPM container
Ví dụ luồng cho một ứng dụng Node.js:
Client → Caddy → Nginx → Node.js container
Xử lý nhiều phiên bản PHP
Mỗi người dùng chạy phiên bản container PHP-FPM riêng, đảm bảo tương thích với các framework khác nhau hoặc ứng dụng cũ. Nhiều phiên bản PHP (7.4, 8.0, 8.1, 8.2, 8.3, v.v.) có thể cùng tồn tại an toàn cho một người dùng
Ví dụ:
Site A
Client → Caddy → Nginx → PHP-FPM-8.2
Site B
Client → Caddy → Nginx → PHP-FPM-7.4
Site C
Client → Caddy → Nginx → PHP-FPM-8.3
Dùng Varnish (tuỳ chọn)
Nếu người dùng bật bộ nhớ đệm Varnish, Varnish nằm giữa Caddy và web server:
Client → Caddy → Varnish → Webserver → php container
Điều này cho phép lưu đệm và tăng tốc trước khi yêu cầu tới backend.
Ví dụ các luồng
PHP (Nginx + PHP-FPM-8.2)
Client → Caddy (SSL, WAF, redirects)
→ Nginx (per-user webserver)
→ PHP-FPM-8.2 (specific PHP version)
PHP (có Varnish + PHP-FPM-8.1)
Client → Caddy (SSL, WAF, redirects)
→ Varnish (caching)
→ Nginx (per-user webserver)
→ PHP-FPM-8.1 (specific PHP version)
Node.js
Client → Caddy (SSL, WAF, redirects)
→ Nginx (per-user webserver)
→ Node.js (user’s container)
OpenLiteSpeed (có sẵn LSPHP)
Client → Caddy (SSL, WAF, redirects)
→ OpenLiteSpeed (VHost + lsphp runtime)
✅ Tóm lại: Caddy luôn là điểm vào đầu tiên → định tuyến lưu lượng tới web server của người dùng → web server chuyển tiếp yêu cầu tới container ứng dụng của người dùng (phiên bản PHP, Node.js, v.v.).