Dưới đây là một cấu hình chính cơ bản cho trang WordPress, ví dụ tên miền là example.com, và địa chỉ chính thức là https://example.com
example.com {
root * /var/www/example.com/public_html
encode zstd gzip
log {
output file /var/www/example.com/logs/access.log {
roll_size 10mb
roll_keep 10
}
}
php_fastcgi unix//run/php/php8.3-fpm.sock
file_server
}
–
example.com {
<các lệnh sẽ được viết vào đây>
}
Nếu có thêm trang web khác trong Caddy, thì viết bổ sung cho trang đó:
example.com {
<các lệnh được viết vào đây sẽ được áp dụng cho example.com>
}
other-web.com {
<các lệnh được viết vào đây sẽ được áp dụng cho other-web.com>
}
–
root * /var/www/example.com/public_html
Dùng để chỉ thư mục gốc (root) của website.
/var/www: vị trí truyền thống để đặt các thư mục web trên Linuxexample.com: địa chỉ trang web, nó thay đổi theo tên miền thực tế của bạn, cấu trúc này tốt vì nếu bạn chạy nhiều web trên Caddy, nó sẽ có các thư mục tương ứng với tên miền để dễ dàng phân biệt.public_html: cũng là kiểu đặt tên truyền thống cho thư mục chứa dữ liệu web.
Từ phiên bản 2.8 trở đi có thể bỏ dấu * và viết thẳng:
root /var/www/example.com/public_html
Link tham khảo thêm: https://caddyserver.com/docs/caddyfile/directives/root
(Thời điểm bài viết này xuất bản, tháng 12/2025 Caddy ở phiên bản 2.10.2 / https://github.com/caddyserver/caddy/releases)
–
encode zstd gzip
Cái này dùng để nén dữ liệu dạng văn bản như html, css, js, txt, xml,…
- Hai thuật toán nén được sử dụng là zstd (do Facebook phát triển), và gzip (kiểu nén truyền thống, đã được phát triển từ lâu). zstd được đánh giá tốt hơn.
- Với khai báo trên zstd là lựa chọn mặc định, nếu trình duyệt không hỗ trợ mới chuyển sang gzip
Chỉ thị trên là để rõ ràng, mặc dù các thiết lập mặc định của encode trong Caddy cũng y như vậy, nghĩa là bạn chỉ viết encode nó cũng tương đương chỉ thị trên.
Nếu chỉ muốn dùng gzip thì viết:
encode gzip
Link tham khảo thêm: https://caddyserver.com/docs/caddyfile/directives/encode
–
log {
output file /var/www/example.com/logs/access.log {
roll_size 10mb
roll_keep 10
}
}
Ghi lại nhật ký truy cập vào website.
output: chỉ thị đầu ra của file./var/www/example.com/logs/access.log: địa chỉ lưu log, nó đang có cấu trúc tốt, nằm trong thư mục web cha (example.com), nhưng tách khỏi thư mục web gốc (public_html).logs/access.loglà tên tùy chọn (tên thư mục chứa log, và tên file log). Lưu ý lệnh này sẽ lỗi nếu trước đó thư mục log chưa được tạo.roll_size 10mb: quy định kích thước mỗi gói log là 10 MiBroll_keep 10: giữ lại tối đa 10 gói mới nhất, đến gói thứ 11, nó sẽ xóa gói đầu tiên đi.
–
php_fastcgi unix//run/php/php8.3-fpm.sock
Caddy không trực tiếp xử lý PHP, nó phải gửi cho PHP-FPM thực hiện rồi nhận lại kết quả, và phần này chỉ cho Caddy biết PHP-FPM đó nằm ở đâu.
php8.3: chỉ đến phiên bản PHP, điều này rất quan trọng, nếu bản cài phiên bản php X nhưng lại chỉ vị trí PHP-FPM với phiên bản Y, thì nó sẽ không chạy được.
Link tham khảo thêm: https://caddyserver.com/docs/caddyfile/directives/php_fastcgi
–
file_server
Chỉ thị để Caddy xử lý các file tĩnh như ảnh, CSS, JS,…
Nó cần thông tin root để biết các file tĩnh nằm ở đâu.
Link tham khảo thêm: https://caddyserver.com/docs/caddyfile/directives/file_server