Caddy:开箱即用的带证书站点
一个自行获取和续期 HTTPS 证书的 Web 服务器。在 VPS 上安装、最小化 Caddyfile,以及从 Nginx 迁移。
更新于 2026年8月23日
Caddy 的功能与 Nginx 相同,但会自行签发和续期 Let's Encrypt 证书。一个站点配置只需三行,因此在 VDS 上做第一个项目时,它是通往可用 HTTPS 的最短路径。
安装
Debian 和 Ubuntu — 从官方仓库安装:
apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' \
| gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' \
> /etc/apt/sources.list.d/caddy-stable.list
apt update && apt install -y caddy
AlmaLinux 和 CentOS Stream:
dnf install -y 'dnf-command(copr)'
dnf copr enable -y @caddy/caddy
dnf install -y caddy && systemctl enable --now caddy
您的第一个站点
整个配置都放在 /etc/caddy/Caddyfile 中:
example.ru {
root * /var/www/example.ru
file_server
encode gzip zstd
}
mkdir -p /var/www/example.ru
echo '<h1>Works</h1>' > /var/www/example.ru/index.html
caddy validate --config /etc/caddy/Caddyfile
systemctl reload caddy
首次请求后几秒钟,站点就会在 https://example.ru 打开。您无需再启动其他任何东西:Caddy 已自行获取证书,并会自动续期。
反向代理应用程序
如果您在本地端口上运行着 Node.js 或 Python 服务,配置如下:
api.example.ru {
reverse_proxy 127.0.0.1:3000
}
Caddy 会自行添加 X-Forwarded-For 和 X-Forwarded-Proto 请求头。有关该方案的更多内容,请参阅反向代理。
多个站点就是在同一个文件中写多个块,请参阅一台机器上的多个站点。
需要提前检查的事项
- 域名的 A 记录指向控制面板“概览”中显示的机器地址
/hosting/vds/m/<id>; - 机器的防火墙已开放 80 和 443 端口,且未被 Nginx 或 Apache 占用;
- 域名确实能解析:
dig +short example.ru。
如果第一项没有完成,证书签发就会失败:Let's Encrypt 必须能通过域名访问到您的机器。
常见错误
| 现象 | 原因 |
|---|---|
could not get certificate | 域名未指向该机器,或 80 端口已关闭 |
address already in use | Nginx 或 Apache 正在运行 — 请停掉其中一个 |
| 站点只能通过 HTTP 打开 | Caddyfile 中在域名前写了 :80 或 http:// |
| 签发尝试次数过多 | Let's Encrypt 的频率限制 — 请用 tls internal 进行调试 |
日志:journalctl -u caddy -f。
Caddy 将证书存放在
/var/lib/caddy/.local/share/caddy。当您在“访问”选项卡中重装系统时,请复制该目录,否则重装后签发将从零开始。