Cấu hình chính của trang WordPress trong Caddyfile

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 Linux
  • example.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.log là 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 MiB
  • roll_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

Viết một bình luận