I: snippets
snippets trong caddy nó giống như một function trong code thường dùng của các ngôn ngữ lập trình vậy, nó được đặt tên và được gọi thông qua lệnh import, snippets là một đoạn code chứa các thông tin cấu hình chung nó được dùng để làm giảm tải cho việc cấu hình hệ thống
Trong cấu trúc mặc định của caddy thì snippets được sếp thứ tự là thứ 2 từ trên xuống theo sơ đồ sau

Ví dụ điển hình nhất của snippets là sài để chuyển hướng http sang https, ví dụ nó sẽ như sau
(redirect) {
@http {
protocol http
}
redir @http https://{host}{uri}
}và mỗi khi bạn cần chuyển https sang https ở đâu thì chỉ cần thêm dòng này vào là song
import redirectVí dụ chúng ta sẽ có cấu hình như sau hoàn chỉnh để chuyển hướng từ http sang https cho 2 domain caddy1 và caddy2
(redirect) {
@http {
protocol http
}
redir @http https://{host}{uri}
}
caddy1.manhtuong.net {
import redirect
}
caddy2.manhtuong.net {
import redirect
}Ngoài việc chuyển hướng snippet cũng có nhiều tác dụng khác như cấu hình cho header mình đã đề cập trong bài: Cấu hình bảo mật cho header của website Caddyserver
II: Named matchers
Named matchers thường được dùng kèm với snippets để tăng cường cấu hình cho các thành phần riêng lẻ trong website nó được dùng như một điều kiện để chạy các đoạn cấu hình trong snippets.
Trong caddy file thì Named matchers được gọi thông qua “@name”, bạn có thể thay name bằng bất cứ cái gì bạn muốn ví dụ ở trên mình đặt named là @http,
Ngoài ra chúng có thể đứng riêng lẻ và có thể được dùng như một điều kiện để chạy các đoạn cấu hình khác. nếu chúng đừng riêng lẻ không trong snippets thì bạn cần phải đặt cấu hình này bên trong block của domain.
Ví dụ đoạn code dưới đây mình sẽ dùng named matchers là @mobile để tiến hành làm điều kiện để khi user truy cập với user-agent AppleWebKit sẽ được hệ thống tự động chuyển dữ liệu đó sang một server dành riêng cho mobile thông qua cấu hình reverse proxy.
@mobile {
header user-agent *AppleWebKit*
}
reverse_proxy @mobile localhost:9999Đây cũng là một cấu hình thông dụng khi bạn muốn tùy chỉnh giao diện cho máy tính và điện thoại một cách tối ưu. Một cấu hình đầy đủ nó sẽ như sau
caddy.manhtuong.net {
@mobile {
header user-agent *AppleWebKit*
}
reverse_proxy @mobile localhost:9999
}Tùy vào yêu cầu hãy áp dụng chúng cho linh hoạt vào hệ thống của bạn