Nếu trong nginx có cấu hình theo localtion thì caddy có cấu hình route để tiến hành phân lập các cấu hình riêng biệt cho từng vị trí, từng patch khác nhau của website
Có một ví dụ như sau: Nếu một website có nhiều hệ thống backend được gọi theo bảng thứ tự bên dưới
| Tên | đường dẫn truy cập | đường dẫn mong muốn |
| API 1 | backend_1:9000 | domain.com/api1 |
| API 2 | backend_2:9000 | domain.com/api2 |
Nếu với nginx chúng ta sẽ dùng cấu hình localtion để trỏ cấu hình reverse proxy cho api thì ở caddy việc này được giải quyết qua cấu hình của route. chúng ta sẽ cấu hình theo bản phía trên như sau với route như sau
route {
reverse_proxy backend_1:9000
}Thêm vào cấu hình trong seri này chúng ta có một route cho đường dẫn caddy.manhtuong.net/api như sau
{
order coraza_waf first
}
(cors) {
@cors_preflight method OPTIONS
@cors header Origin {args.0}
handle @cors_preflight {
header Access-Control-Allow-Origin "{args.0}"
header Access-Control-Allow-Methods "GET, POST, PUT, PATCH, DELETE"
header Access-Control-Allow-Headers "Content-Type"
header Access-Control-Max-Age "3600"
respond "" 204
}
handle @cors {
header Access-Control-Allow-Origin "{args.0}"
header Access-Control-Expose-Headers "Link"
}
}
caddy.manhtuong.net {
coraza_waf {
include /etc/caddy/waf/config.conf
include /etc/caddy/waf/whitelist.conf
include /etc/caddy/waf/coreruleset/crs-setup.conf.example
include /etc/caddy/waf/coreruleset/rules/*.conf
}
import cors https://caddy.manhtuong.net
route {
rate_limit {body.id} 200r/m
}
route /api1/* {
reverse_proxy backend_1:9000
}
route /api2/* {
reverse_proxy backend_2:9000
}
file_server {
hide .git
}
root * /home/caddy/web
php_fastcgi unix//run/php/php7.4-fpm.sock
log {
output file /home/caddy/caddy.manhtuong.net.log
}
}các bạn thay đổi api thành các thông tin mà các bạn cấu hình nó
caddy với route mình cũng có thể dùng nó để chuyển hướng tới một website thông qua cấu hình redir như sau
route /api/* {
redir https://anothersite.com{uri}
}Áp vào cấu hình của chúng ta thì sẽ được một cấu hình như sau:
{
order coraza_waf first
}
(cors) {
@cors_preflight method OPTIONS
@cors header Origin {args.0}
handle @cors_preflight {
header Access-Control-Allow-Origin "{args.0}"
header Access-Control-Allow-Methods "GET, POST, PUT, PATCH, DELETE"
header Access-Control-Allow-Headers "Content-Type"
header Access-Control-Max-Age "3600"
respond "" 204
}
handle @cors {
header Access-Control-Allow-Origin "{args.0}"
header Access-Control-Expose-Headers "Link"
}
}
caddy.manhtuong.net {
coraza_waf {
include /etc/caddy/waf/config.conf
include /etc/caddy/waf/whitelist.conf
include /etc/caddy/waf/coreruleset/crs-setup.conf.example
include /etc/caddy/waf/coreruleset/rules/*.conf
}
import cors https://caddy.manhtuong.net
route {
rate_limit {body.id} 200r/m
}
route /api/* {
redir https://anothersite.com{uri}
}
file_server {
hide .git
}
root * /home/caddy/web
php_fastcgi unix//run/php/php7.4-fpm.sock
log {
output file /home/caddy/caddy.manhtuong.net.log
}
}Như vậy khi người dùng truy cập caddy.manhtuong.net/api sẽ được chuyển hướng tới anothersite.com với patch được giữ nguyên