NGHIÊN CỨU VỀ CADDY SERVER
Thông tin metadata
- Người thực hiện: [NGUYỄN PHẠM TUYÊN]
- Thời gian thực hiện: [02/12/2025] – [04/12/2025]
- Người hướng dẫn hoặc cộng tác: [Tech Lead Trần Thanh Vượt]
1. Mục đích của nghiên cứu
- Mục đích: Giới thiệu về Caddy Server
- Caddy xử lý request đến.
- Cấu hình của Caddy
- Tính năng của Caddy
- Kết quả mong đợi: Hiểu rõ ưu/nhược điểm để lựa chọn webserver phù hợp cho dự án
2. Tổng quan
Giới thiệu về Caddy Server

Caddy Server là một web server mã nguồn mở hiện đại được phát triển bằng ngôn ngữ Go, tận dụng khả năng xử lý song song (concurrency) và hiệu năng cao vốn có của Go. Ra mắt lần đầu vào năm 2015. Điểm nổi bật của Caddy là tự động cấp và gia hạn SSL/TLS qua Let’s Encrypt, giúp HTTPS hoạt động ngay khi cài đặt mà không cần cấu hình phức tạp như Nginx hay Apache. Caddy còn hỗ trợ HSTS, chống DDoS, kiểm soát truy cập, đồng thời tích hợp sẵn HTTP/2 và HTTP/3 (QUIC), cải thiện tốc độ, giảm độ trễ và nâng cao bảo mật mà không cần thêm mô-đun hay cấu hình đặc biệt.
Core process (cách xử lý request đến)
Caddy dựa trên kiến trúc đa luồng (goroutine) nhờ Go, mỗi request được xử lý nhẹ, độc lập và gần như không chờ hàng đợi. Quy trình xử lý một request gồm 7 bước chính:
- Nhận request + handshake: Hỗ trợ HTTP/1.1, HTTP/2 (TCP) và HTTP/3 (QUIC/UDP). TLS handshake tự động, chứng chỉ được cấp/gia hạn nếu thiếu. HTTPS hoạt động ngay khi cài đặt.
- TLS Manager: Kiểm tra, gia hạn hoặc đăng ký chứng chỉ tự động (Let’s Encrypt/ZeroSSL), TLS 1.3 mặc định.
- Routing Engine: Chọn site/route phù hợp dựa trên Host và Path, chuyển request vào handler chain.
- Matchers: Kiểm tra điều kiện (path, method, header, host…) để chọn handler chính xác.
- Handler Chain: Xử lý request (file_server, reverse_proxy…), mỗi handler là goroutine riêng, không block request khác.
- Middleware (nếu có): Authentication, rate limiting, header rewrite, caching, logging… Chuỗi middleware chạy tuần tự trước khi trả response.
- Trả response: Áp dụng Gzip/Brotli, logging, streaming, zero-copy I/O, HTTP/2 multiplex để tốc độ cao và hiệu quả.
Mô hình thứ nhất: Diễn tả quá trình tự động cấp chứng chỉ (ACME)

Mô hình thứ hai: Diễn tả quá trình quá trình xử lý request của Caddy Server

Ví dụ trực quan: Giả sử một khách hàng muốn truy cập trang dịch vụ VPS giá rẻ của VinaHost để thuê một VPS giá rẻ. Caddy sẽ thực hiện 7 bước sau trong môi trường đa luồng (goroutine):

- Giai đoạn 1: Kết Nối và Bảo Mật
- Nhận Request + Handshake (Tiếp nhận):
- Khách hàng nhập
https://vinahost.vn/thue-vps-gia-re/. Caddy ngay lập tức khởi tạo một goroutine nhẹ để xử lý request này độc lập, không làm chậm request khác. Nó thiết lập kết nối nhanh chóng, có thể là qua HTTP/3 (QUIC) nếu trình duyệt hỗ trợ.
- Khách hàng nhập
- TLS Manager (Bảo mật Tự động):
- Caddy kiểm tra chứng chỉ SSL cho
vinahost.vn. Vì Caddy hỗ trợ Automatic HTTPS, nó đảm bảo chứng chỉ đã được cấp (thường là Let’s Encrypt hoặc ZeroSSL) và còn hiệu lực (sẽ tự động gia hạn trước khi hết hạn). Kết nối được mã hóa an toàn bằng TLS 1.3 trước khi dữ liệu được trao đổi.
- Caddy kiểm tra chứng chỉ SSL cho
- Nhận Request + Handshake (Tiếp nhận):
- Giai đoạn 2: Định Tuyến và Lựa Chọn Xử Lý
- Routing Engine (Định tuyến Site):
- Caddy phân tích
Host(vinahost.vn) vàPath(/thue-vps-gia-re/). Nó nhanh chóng tìm ra khối cấu hình (Site/Route) phù hợp cho tên miềnvinahost.vn. Request được đẩy vào chuỗi xử lý cho trang web chính.
- Caddy phân tích
- Matchers (Lọc chính xác):
- Caddy kiểm tra điều kiện (Matcher) trong cấu hình của
vinahost.vn. Ví dụ: NếuPathlà/thue-vps-gia-re/, Matcher xác định rằng đây là một trang dịch vụ động và cần được chuyển tới máy chủ backend. Matcher chọn Reverse Proxy Handler vì đây là trang cần dữ liệu từ backend (như CMS hoặc ứng dụng bán hàng).
- Caddy kiểm tra điều kiện (Matcher) trong cấu hình của
- Routing Engine (Định tuyến Site):
- Giai đoạn 3: Xử Lý và Phản Hồi
- Handler Chain (Thực thi – Reverse Proxy):
- Handler
reverse_proxyđược kích hoạt. Nó chạy trong một goroutine riêng. Handler này kết nối tới server backend thực sự chứa logic và dữ liệu của trang (ví dụ: một cụm máy chủ Apache/PHP hoặc Node.js). Quá trình gọi backend không làm chặn các request khác đang được xử lý song song.
- Handler
- Middleware (Xử lý bổ sung):
- Dữ liệu từ backend quay lại Caddy và đi qua các Middleware.
- Ví dụ:
- Logging: Ghi lại giao dịch vào log (dạng JSON Structure Log để dễ dàng phân tích bằng ELK/Loki).
- Caching: Nếu đây là lần thứ N trang này được yêu cầu trong thời gian ngắn, Caddy có thể lưu cache response tại đây để lần sau trả lời ngay lập tức mà không cần gọi backend (giảm tải).
- Trả Response (Phản hồi Tối ưu):
- Caddy gửi mã HTML của trang VPS về trình duyệt. Nó tự động áp dụng Gzip/Brotli để nén dữ liệu, giảm kích thước và tăng tốc độ tải. Nhờ HTTP/2/3, Caddy có thể đẩy nhiều file CSS/JS/ảnh qua cùng một kết nối hiệu quả. Toàn bộ quá trình diễn ra liền mạch, mang lại trải nghiệm truy cập nhanh chóng và an toàn cho khách hàng.
- Handler Chain (Thực thi – Reverse Proxy):
Configuration

- JSON Native: Ngôn Ngữ Duy Nhất Của Máy Chủ
- Trọng Tâm (Core): JSON Native là định dạng cấu hình gốc, chi tiết và đầy đủ nhất. Đây là ngôn ngữ duy nhất mà các module bên trong Caddy thực sự hiểu và thực thi.
- Linh hoạt trong cú pháp: Caddyfile thân thiện với con người và có thể dùng các định dạng khác (YAML, NGINX Conf) chỉ là lớp “mặt nạ”. Chúng được các Bộ chuyển đổi cấu hình (Config adapters) tự động ngầm dịch (implicitly translate) thành JSON trước khi Caddy xử lý.
- API Cấu hình: Cổng Quản Lý Độc Quyền
- API Gateway: Caddy nhận và quản lý cấu hình thông qua một điểm cuối REST API (Administration API). Đây là cách chính thức duy nhất để tương tác với máy chủ.
- Nhập (Input): Gửi JSON (hoặc định dạng đã được dịch) qua API. – Xuất (Export): Luôn có thể truy cập cấu hình đang chạy ở định dạng JSON bằng yêu cầu GET đơn giản bất cứ lúc nào (runtime access).
- Zero-Downtime: Nhờ API này, bạn có thể thay đổi cấu hình, thêm site/backend, mà không cần reload toàn bộ dịch vụ, đạt được cấu hình động (Dynamic Configuration).
- API Gateway: Caddy nhận và quản lý cấu hình thông qua một điểm cuối REST API (Administration API). Đây là cách chính thức duy nhất để tương tác với máy chủ.
- CLI: Vỏ Bọc Lệnh Shell
- Tính Tiện Lợi: CLI (Command Line Interface) của Caddy (ví dụ:
caddy reload) chỉ là một vỏ bọc (wrapper). Nó đóng gói cấu hình và gửi yêu cầu API tương ứng đến tiến trình Caddy đang chạy, giúp người dùng quen thuộc với lệnh shell quản lý dễ dàng hơn.
- Tính Tiện Lợi: CLI (Command Line Interface) của Caddy (ví dụ:
Features
Các tính năng chính của Caddy:
- Cấu Hình Linh Hoạt & Runtime API
- Caddyfile/JSON: JSON Native API là API gốc của Caddy và toàn bộ cấu hình nội bộ của Caddy đều được biểu diễn bằng JSON. Hỗ trợ Caddyfile trực quan cho cấu hình nhanh, nhưng nền tảng là JSON Native chi tiết.
- Zero-Downtime: Sử dụng Dynamic Configuration API (REST API) để thêm, xóa, sửa cấu hình (site/upstream) ngay tại runtime mà không cần reload dịch vụ, rất phù hợp cho Microservices và CI/CD.
- Triển khai: Hỗ trợ đa nền tảng (Linux, Windows, ARM, x86, v.v.) và Service Discovery (Consul, Kubernetes).
- Tự động hóa Bảo mật Toàn diện
- Automatic HTTPS: Caddy tự động lấy, cài đặt và gia hạn chứng chỉ TLS/SSL công cộng (Let’s Encrypt/ZeroSSL) và cả chứng chỉ nội bộ (private CA).
- Bảo mật Mặc định: Hỗ trợ HTTP/2, HTTP/3 (QUIC), và TLS 1.3 mặc định. Tự động redirect HTTP $\to$ HTTPS, giúp hệ thống luôn “secure by default”.
- Đa Vai trò & Hiệu năng Cao
- Đa năng: Tích hợp sẵn Web Server, Reverse Proxy, Load Balancer (với Health Checks, Circuit Breaker) và API Gateway nhẹ, không cần plugin ngoài.
- Modular & Độc lập: Kiến trúc module cho phép dễ dàng mở rộng chức năng (Auth, Caching, Rate Limiting) và compile thành một binary duy nhất (Unikernel-friendly), không phụ thuộc ngoài.
- Performance: Tận dụng concurrency của Go để xử lý hàng ngàn kết nối đồng thời với overhead thấp, tối ưu cho môi trường lưu lượng cao.
- Hiện đại: Hỗ trợ Static File Server tốc độ cao (Gzip/Brotli) và Structured Logging JSON chuẩn mực.
3. Triển khai
Cài đặt Caddy Webserver
Bước 1: Cho phép kết nối HTTP và HTTPS qua tường lửa
sudo ufw allow 80
sudo ufw allow 443
sudo ufw reload

Bước 2: Cài đặt Caddy
Caddy có thể được cài đặt bằng nhiều phương pháp, bao gồm thông qua Docker, kho lưu trữ chính thức hoặc biên dịch từ mã nguồn. Trong hướng dẫn này, chúng tôi sẽ sử dụng kho lưu trữ Caddy chính thức cho các máy tính chạy Ubuntu/Debian. Cài đặt gói này tự động khởi động và chạy Caddy dưới dạng một dịch vụ systemd tên caddy
# Cài đặt các gói cơ bản
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
# Thêm khóa GPG
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
# Thêm kho lưu trữ Caddy vào hệ thống
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
# Cấp quyền đọc cho key và file kho
sudo chmod o+r /usr/share/keyrings/caddy-stable-archive-keyring.gpg
sudo chmod o+r /etc/apt/sources.list.d/caddy-stable.list
# Cập nhật danh sách gói và cài đặt Caddy
sudo apt update
sudo apt install caddy

Sau khi cài xong, kiểm tra phiên bản bằng lệnh:
caddy version

Bước 3: Kích hoạt và quản lý dịch vụ Caddy Webserver
Caddy hoạt động như một dịch vụ hệ thống. Để khởi động cùng hệ thống và kiểm soát dịch vụ:
sudo systemctl enable caddy
sudo systemctl start caddy
sudo systemctl status caddy

Truy cập địa chỉ IP của máy chủ để kiểm tra trang web mặc định: http://YOUR_SERVER_IP

Bước 4: Tạo Website trên Caddy
Tiếp đến sẽ tạo một website đơn giản để phục vụ từ Caddy.
- Tạo thư mục chứa trang web:
bash sudo mkdir -p /var/www/vinaexample.com - Tạo tệp HTML với nội dung ngẫu nhiên:
sudo vim /var/www/vinaexample.com/index.html
Bước 5: Cấu hình Caddyfile
Caddy sử dụng file cấu hình chính là Caddyfile, nằm ở /etc/caddy/.
- Sao lưu cấu hình mặc định:
sudo mv /etc/caddy/Caddyfile /etc/caddy/Caddyfile.default
- Tạo file cấu hình mới:
sudo vim /etc/caddy/Caddyfile
Nội dung mẫu:
https://YOUR_SERVER_IP {
root * /var/www/vinaexample.com
file_server
tls internal
log {
output file /var/log/caddy/vinaexample.log
format console
}
# Redirect HTTP → HTTPS tự động
encode gzip # nén gzip/brotli
}

Giải thích chi tiết từng thành phần cấu hình:
- 88: Lắng nghe trên cổng HTTP (80), thường dùng khi chưa bật SSL hoặc để redirect sang HTTPS. Tại đây bạn có thể dùng
https://YOUR_SERVER_IPCaddy phục vụ trang web trên HTTPS tại IP máy chủ. - root: Đường dẫn đến thư mục chứa mã nguồn website. Nghĩa là Caddy sẽ tự động trả về HTML, CSS, JS, ảnh, video… như một webserver thông thường.
- file_server: Bật tính năng phục vụ tệp tĩnh.
- tls: Caddy tự tạo chứng chỉ nội bộ (self-signed), dùng được để test nhưng trình duyệt sẽ báo “Không an toàn / Untrusted certificate”. Hoặc để trống, Caddy sẽ tự xin Let’s Encrypt.
- log: Ghi log truy cập và lỗi và định dạng, dạng “console style” giúp dễ đọc.
- gzip: các chỉ thị liên quan đến gzip giúp nén dữ liệu trước gửi đến client giúp giảm kích thước dữ liệu gửi đi, hạn chế tiêu tốn băng thông.
Bảo mật file cấu hình Caddy
# Gán quyền sở hữu thư mục cho user caddy
sudo chown -R caddy:caddy /etc/caddy
# Hạn chế quyền đọc/ghi file Caddyfile
sudo chmod 660 /etc/caddy/Caddyfile
# Kiểm tra lại quyền
ls -l /etc/caddy/

Bước 6: Kiểm tra và tải lại cấu hình
Tạo file log nếu chưa có và set quyền:
sudo touch /var/log/caddy/vinaexample.log
sudo chown caddy:caddy /var/log/caddy/vinaexample.log
sudo chmod 644 /var/log/caddy/vinaexample.log
sudo chown -R caddy:caddy /var/log/caddy
sudo chmod 755 /var/log/caddy
Trước khi áp dụng, hãy kiểm tra xem Caddyfile có lỗi cú pháp không:
sudo caddy validate --config /etc/caddy/Caddyfile
# Reload lại Caddy
sudo systemctl reload caddy

Bước 7: Kiểm tra kết quả
Truy cập trình duyệt đến:
http://YOUR_SERVER_IP:80 hoặc https:// <your_domain >

Để xóa hoàn toàn Caddy khỏi VPS của bạn, bao gồm cả chương trình, cấu hình, log, SSL, cache… bạn làm theo các bước sau:
- Dừng dịch vụ Caddy
sudo systemctl stop caddy
sudo systemctl disable caddy
- Gỡ Caddy
sudo apt remove --purge caddy -y
sudo apt autoremove -y
- Xóa cấu hình và dữ liệu
sudo rm -rf /usr/share/keyrings/caddy-stable-archive-keyring.gpg
sudo rm -rf /etc/caddy
sudo rm -rf /var/log/caddy
sudo rm -rf /var/lib/caddy
sudo rm -rf /var/www/vinaexample.com
- Kiểm tra caddy còn tồn tại trong hệ thống
which caddy
sudo systemctl status caddy
Cài đặt Caddy Webserver bằng Docker
Ngoài việc chạy Caddy dưới dạng service systemd như trên đã hướng dẫn, bạn có thể chạy Caddy Server bằng Docker, thuận tiện cho việc isolate và deploy nhanh.
Chuẩn bị:
– Docker
– Docker Compose
Bước 1: Tạo thư mục web
Giả sử bạn làm việc trong ~/caddy:
mkdir -p ~/caddy/www
Copy hoặc tạo các file vào thư mục này:
cd ~/caddy/www
vim index.html
Bước 2: Chỉnh Caddyfile để phục vụ thư mục web
Trong ~/caddy/Caddyfile:
:80 {
root * /srv
file_server
log {
output file /var/log/caddy/vinaexample.log
format console
}
}

Giải thích:
root * /srv: thư mục web trong container mà Caddy sẽ phục vụ.file_server: bật phục vụ file tĩnh (HTML, CSS, ảnh…).log: ghi log truy cập vào file/var/log/caddy/vinaexample.logtrong container.- Khi chạy Docker, chúng ta sẽ mount thư mục host
~/caddy/wwwvào/srvtrong container.
Bước 3: Chỉnhdocker-compose.ymlđể mount thư mục web
Trong~/caddy/docker-compose.yml, cấu hình như sau:
version: '3.8'
services:
caddy:
container_name: caddy
image: caddy:alpine
restart: always
ports:
- 80:80
- 443:443
networks:
- reverse_proxy
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- ./www:/srv
- caddy_data:/data
- caddy_config:/config
volumes:
caddy_data:
caddy_config:
networks:
reverse_proxy:
external: true

Bước 4: Tạo mạng Docker (nếu chưa có)
docker network create reverse_proxy
Bước 5: Khởi chạy Caddy
cd ~/caddy/
docker compose up -d
-d: chạy ở background.- Container sẽ mount thư mục
wwwvào/srv, phục vụindex.htmlvà ảnhvinahost.png.
Bước 6: Kiểm tra
Từ VPS:
curl http://localhost
curl https://localhost
hoặc truy cập từ bên ngoài: http:YOUR_SERVER_IP

Cài đặt Caddy làm Reverse Proxy
Giả sử tôi có 1 website chạy trên cổng port 8080
Giao diện web demo trên cổng 8080 khi truy cập http:YOUR_SERVER_IP:8080

Sau đó Cấu hình Caddyfile
sudo vim /etc/caddy/Caddyfile
Nội dung mẫu:
https://YOUR_SERVER_IP {
reverse_proxy 127.0.0.1:8080
tls internal
log {
output file /var/log/caddy/vinaexample.log
format console
}
}

Sau đó validate file Caddyfile và reload Caddy
sudo vim /etc/caddy/Caddyfile
sudo systemctl reload caddy

Truy cập trình duyệt gõ: https://YOUR_SERVER_IP là của Caddy Reverse Proxy
và http://YOUR_SERVER_IP:8080 là của website demo

Cài đặt Caddy LoadBalancer
Caddy biến reverse_proxy thành load balancer thông minh với nhiều chính sách, hỗ trợ health check và tích hợp sẵn các tính năng web như HTTPS, gzip, logging. Bạn có thể liệt kê nhiều server trong reverse_proxy.
Caddy hỗ trợ các cơ chế load balancing chính:
- Round Robin: tuần tự giữa các backend (mặc định).
- Least Connections: gửi đến backend có ít kết nối nhất.
- Random: chọn backend ngẫu nhiên.
- First / Fallback: gửi đến server đầu tiên sẵn sàng, nếu lỗi thì chuyển tiếp.
- Maglev (hashing): request từ cùng client đi về cùng backend (sticky session).
- Health-based: loại bỏ backend không phản hồi bằng health checks.
Ví dụ: Giả sử tôi có 2 website và tôi đặt trên mỗi cổng khác nhau là port 8080 và port 8081. Mục đích tôi demo loadbalancer với cơ chế round robin

Tại file cấu hình Load Balancer của Caddy với nội dung sau:
YOUR_DOMAIN {
# Reverse proxy với load balancing round-robin
reverse_proxy YOUR_WEBSERVER_IP_1:8080 YOUR_WEBSERVER_IP_2:8081 {
lb_policy round_robin
}
log {
output file /var/log/caddy/kinhdocacanh.log
format console
}
encode gzip
}

Sau khi validate Caddyfile và reload Caddy
sudo systemctl start caddy
sudo systemctl reload caddy
Truy cập domain vào trình duyệt để kiểm tra: https://YOUR_DOMAIN
Truy cập tên miền lần 1:

Reload website cùng với tên miền đó:

Sau mỗi lần reload website sẽ tuần tự thay đổi nội dung theo webserver mà Caddy sử dụng
4. Phân tích

1. Ưu điểm Vượt Trội Của Caddy
Các điểm mạnh của Caddy tập trung vào việc giảm thiểu công việc vận hành và tối ưu hóa cho môi trường Cloud hiện đại:
- Tự động hóa HTTPS Toàn diện: Đây là điểm mạnh nhất. Caddy tự động hoàn toàn việc cấp phát, gia hạn chứng chỉ SSL (qua Let’s Encrypt/ZeroSSL) và chuyển hướng HTTP sang HTTPS mà không cần công cụ hay cron job bên ngoài như Nginx.
- Cấu hình Đơn giản: Cú pháp Caddyfile rất ngắn gọn và trực quan, dễ đọc và dễ bảo trì, cho phép thiết lập HTTPS và reverse proxy chỉ bằng một dòng lệnh, trái ngược với cấu hình dài dòng và phức tạp của Nginx.
- Hỗ trợ HTTP/3 (QUIC) mặc định: Caddy tích hợp HTTP/3 ngay trong core, sẵn sàng cho công nghệ giao thức mới mà không cần bản build đặc biệt hay patch vá như Nginx.
- Kiến trúc Tối ưu Concurrency: Dựa trên Goroutine (Go), mỗi yêu cầu được xử lý bằng một luồng rất nhẹ, non-blocking, giúp xử lý đồng thời hiệu quả hơn và phù hợp hơn với mô hình microservices so với kiến trúc worker-process của Nginx.
- Quản lý Cấu hình Động: Caddy cho phép thay đổi toàn bộ cấu hình ngay tại runtime thông qua REST API mà không gây ra downtime (zero-downtime reload). Điều này là lợi thế lớn so với Nginx, vốn không có API quản lý động tương tự.
- Tính năng Tích hợp: Caddy có kiến trúc Modular, dễ dàng mở rộng và tích hợp các tính năng nâng cao (như Rate limiting, Auth, Caching) ngay từ đầu, trong khi nhiều tính năng tương đương của Nginx phải dùng bản thương mại (Nginx Plus).
- Bảo mật Mặc định: Caddy áp dụng triết lý “Secure by Default”, tự động bật TLS 1.3, Strict modern cipher và OCSP stapling, những thứ mà người dùng Nginx phải cấu hình thủ công.
2. Nhược điểm của Caddy
Mặc dù hiện đại, Caddy vẫn chưa thể thay thế hoàn toàn Nginx trong mọi trường hợp do một số hạn chế về kinh nghiệm và sự tối ưu hóa:
- Hiệu năng Cực lớn: Trong các kịch bản tải cực lớn (extreme load), như CDN scale, xử lý hàng trăm nghìn kết nối đồng thời, Nginx vẫn có lợi thế về edge optimization và tối ưu hóa Kernel-level nhờ sự trưởng thành hơn 20 năm của nó. Caddy rất nhanh, nhưng chưa đạt đến mức tối đa của Nginx trong các tình huống này.
- Cộng đồng và Tài liệu: Là dự án mới hơn, Caddy có cộng đồng nhỏ hơn, dẫn đến số lượng tài liệu, ví dụ và bài viết troubleshooting trên các nền tảng như StackOverflow ít phong phú hơn so với Nginx.
- Kiểm soát Chi tiết Thấp: Caddy thiên về sự tự động hóa và đơn giản. Khi cần kiểm soát chi tiết rất thấp (low-level optimization) như tinh chỉnh TCP options hay các quy tắc caching phức tạp, Nginx vẫn cung cấp nhiều khả năng can thiệp sâu hơn.
- Phổ biến Doanh nghiệp: Nginx đã là tiêu chuẩn công nghiệp trong các doanh nghiệp lớn, Cloud Providers và Kubernetes Ingress. Caddy vẫn đang phát triển và được ưa chuộng chủ yếu trong giới phát triển, ứng dụng nhỏ/vừa và môi trường container.
- Module Tùy chỉnh: Để sử dụng một số plugin nâng cao của Caddy, người dùng phải build custom binary, trong khi Nginx Plus cung cấp nhiều tính năng tương đương mà không cần build thủ công.
So sánh Caddy với Nginx

Khi lựa chọn web server cho dự án, hiệu suất là yếu tố quan trọng hàng đầu.
- Caddy
- Hiệu suất: Caddy được thiết kế để xử lý tải tốt với khả năng hỗ trợ HTTP/2 và HTTP/3 (QUIC), giúp tăng tốc độ truyền dữ liệu và giảm độ trễ kết nối.
- Tối ưu hóa: Tự động cấp phát và gia hạn SSL, cùng với khả năng cấu hình đơn giản giúp giảm thời gian triển khai và bảo trì.
- Khả năng mở rộng: Phù hợp cho các ứng dụng vừa và nhỏ đến trung bình, có thể xử lý hàng ngàn kết nối đồng thời hiệu quả.
- NGINX
- Hiệu suất: NGINX nổi tiếng với khả năng xử lý lượng lớn kết nối đồng thời nhờ kiến trúc sự kiện không đồng bộ. Đây là lựa chọn phổ biến cho các website có lưu lượng cao.
- Tối ưu hóa: Hỗ trợ đa dạng module, proxy ngược, cân bằng tải, cache mạnh mẽ giúp tăng tốc website.
- Khả năng mở rộng: Phù hợp cho mọi quy mô, từ website nhỏ đến hệ thống lớn với hàng triệu người dùng truy cập.
5. Kết quả đạt được
- Hiểu rõ kiến trúc xử lý request của Caddy.
- Nắm được cấu hình và tính năng chính.
- So sánh ưu/nhược điểm với Nginx để chọn giải pháp phù hợp.
6. Tài liệu tham khảo
Tài liệu tham khảo dạng gợi ý:
[1] https://caddyserver.com/features
[2] https://cloudspinx.com/install-caddy-web-server-on-ubuntu-debian/
[3] https://caddy.community/t/ssl-configuration-in-caddy/15535
[4] https://www.dash0.com/guides/logging-in-caddy

No responses yet