Caddy使用教程
Caddy 简介
Caddy 是一个用 Go 语言编写的现代 Web 服务器,其最大特点是默认自动启用 HTTPS。当你为域名配置 Caddy 时,它会自动向 Let's Encrypt 申请 SSL 证书,并在证书到期前自动续期,全程无需人工干预。
与 Nginx 或 Apache 相比,Caddy 的配置文件 Caddyfile 语法更加简洁直观。托管一个静态网站只需要三行配置,配置反向代理也只需要一行指令。
一、安装 Caddy
1. Linux(官方脚本安装 - 推荐)
这是最简单的方式,会自动配置系统服务:
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddyCentOS/RHEL 用户使用 yum 或 dnf 类似流程,可参考官方文档。
2. Rocky Linux / RHEL 系
sudo dnf update
sudo dnf install -y epel-release
sudo dnf copr enable @caddy/caddy
sudo dnf install -y caddy3. macOS(Homebrew)
brew install caddy4. Docker
docker run -d \
--name caddy \
-p 80:80 \
-p 443:443 \
-p 443:443/udp \
-v /path/to/Caddyfile:/etc/caddy/Caddyfile \
-v caddy_data:/data \
-v caddy_config:/config \
caddy:latest5. Windows
从 GitHub Releases 下载 .zip 文件,解压到任意目录(如 C:\caddy),在 PowerShell 中运行 .\caddy.exe version 测试。
二、配置防火墙
安装完成后,需要开放 HTTP 和 HTTPS 端口:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload三、Caddyfile 配置详解
Caddy 的配置文件名为 Caddyfile,默认位于 /etc/caddy/Caddyfile。
1. 静态文件服务器(最简配置)
example.com {
root * /usr/share/caddy/example.com
file_server
}将 example.com 替换为指向你服务器的域名。Caddy 会自动为该域名申请 HTTPS 证书。
2. 反向代理
example.com {
reverse_proxy localhost:8000
}将请求转发到本地 8000 端口的后端服务。
3. 反向代理 HTTPS 后端(跳过证书验证)
example.com {
reverse_proxy https://192.168.0.1:1234 {
transport http {
tls_insecure_skip_verify
}
}
}适用于后端使用自签名证书的场景。
4. 修改监听端口
{
http_port 8080
}
example.com {
reverse_proxy localhost:3000
}5. 多个站点配置
site1.com {
root * /var/www/site1
file_server
}
site2.com {
reverse_proxy localhost:3000
}四、常用命令
| 命令 | 说明 |
|---|---|
caddy run | 前台运行 Caddy |
caddy run --config /path/to/Caddyfile | 指定配置文件运行 |
caddy reload --config /etc/caddy/Caddyfile --force | 重新加载配置 |
caddy version | 查看版本 |
通过 systemd 管理(生产环境推荐)
sudo systemctl daemon-reload
sudo systemctl enable --now caddy
sudo systemctl status caddysudo systemctl restart caddy # 重启
sudo systemctl reload caddy # 重载配置五、补充:二进制手动安装(可选)
如果需要手动安装二进制文件:
# 下载 Caddy 二进制文件(从 https://caddyserver.com/download)
sudo mv caddy /usr/bin/
sudo mkdir /etc/caddy
sudo cp Caddyfile /etc/caddy/Caddyfile
# 创建 caddy 用户
sudo groupadd --system caddy
sudo useradd --system --gid caddy --create-home --home-dir /var/lib/caddy --shell /usr/sbin/nologin --comment "Caddy web server" caddy
# 创建 systemd 服务文件 /etc/systemd/system/caddy.service六、常见问题
1. 自动 HTTPS 失败怎么办?
- 确保域名已正确解析到服务器公网 IP
- 确保 80 和 443 端口对外开放
- 内网环境无法自动申请证书时,可手动指定证书
2. 如何查看日志?
Caddy 日志默认输出到 systemd journal,可用以下命令查看:
sudo journalctl -u caddy -f3. 配置文件语法检查?
caddy validate --config /etc/caddy/Caddyfile