Caddy 是一款现代化的、功能强大的 Web 服务器,与 Nginx 类似但配置更简单,内置 HTTPS(自动 Let's Encrypt 证书)、HTTP/2 和易用的语法。以下是 Caddy 的核心使用指南:
curl https://getcaddy.com | bash -s personal
或使用包管理器:
# Debian/Ubuntu
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/caddy-stable-archive-keyring] https://dl.cloudsmith.io/public/caddy/stable/deb/debian any-version main" | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy
# CentOS/RHEL
dnf install 'dnf-command(copr)'
dnf copr enable @caddy/caddy
dnf install caddy
下载二进制文件:Caddy 官网
Caddy 的配置文件名为 Caddyfile
(默认路径 /etc/caddy/Caddyfile
),语法极简:
example.com {
root * /var/www/html
file_server
}
file_server
表示静态文件服务api.example.com {
reverse_proxy localhost:3000
}
代理所有请求到本地的 3000 端口。
无需配置,默认自动申请并续签 Let's Encrypt 证书。如需禁用:
example.com {
tls off
# ...
}
example.com {
redir https://www.example.com{uri} 301
}
backend.example.com {
reverse_proxy node1:80 node2:80 node3:80 {
lb_policy round_robin
}
}
example.com {
log {
output file /var/log/caddy/access.log
}
}
sudo systemctl start caddy
sudo systemctl enable caddy # 开机自启
sudo systemctl reload caddy
caddy validate --config /etc/caddy/Caddyfile
example.com {
root * /var/www/wordpress
php_fastcgi unix//run/php/php-fpm.sock
file_server
}
chat.example.com {
reverse_proxy localhost:4000 {
header_up Host {host}
header_up X-Real-IP {remote}
}
}
{$DOMAIN} {
root * /sites/{$SITE_DIR}
}
启动时传入变量:
DOMAIN=example.com SITE_DIR=mysite caddy run
Caddyfile
比 Nginx 配置更易读。www-data
)有权限访问网站目录。tls /path/cert.pem /path/key.pem
指定证书。通过以上步骤,你可以快速部署 Caddy 替代 Nginx。更多功能参考 官方文档。