Caddy 使用教程：自动 HTTPS 的省心反代

Caddy 使用教程：自动 HTTPS 的现代 Web 服务器给网站配 HTTPS 要跑 certbot、要配证书路径、要操心续期？Caddy 说：不用。它默认全站自动 HTTPS，申请、部署、续期全自动，配置文件只有几行。本教程依据 Caddy 官方文档（caddyserver.com/docs）整理。一、安装 Debian/Ubuntu 官方仓库安装（具体命令以官网 Install 页为准，会随版本更新）： sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl 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 caddy systemctl status caddy 其他方式：scoop install caddy（Windows）、Docker 镜像 caddy:latest、或官网直接下载单二进制。二、几行配置就有全站 HTTPS Caddy 的配置文件叫 Caddyfile，默认位置 /etc/caddy/Caddyfile。反向代理一个应用： app.example.com { reverse_proxy 127.0.0.1:8080 } 就这么多。保存后执行： sudo systemctl reload caddy Caddy 会自动向 Let's Encrypt 申请证书、启用 HTTPS、把 HTTP 重定向到 HTTPS，之后自动续期。前提只有一个：域名的 A 记录已指向这台服务器，且 80/443 端口可访问。三、常用场景模板静态网站： blog.example.com { root * /var/www/blog file_server } 多个服务按域名分发： a.example.com { reverse_proxy 127.0.0.1:3000 } b.example.com { reverse_proxy 127.0.0.1:8080 } 压缩：默认已开 zstd/brotli，无需配置。 WebSocket：Caddy 反代默认支持，不用写升级头，零配置。四、本地开发也能 HTTPS localhost { tls internal } Caddy 用内置 CA 给 localhost 签本地证书（需信任一次根证书），调试 Web API、PWA 时特别有用。五、Caddy vs Nginx 维度 Caddy Nginx HTTPS 全自动 certbot + 手动配置配置量几行几十行起步性能够用（个人项目无感）极高 WebSocket 默认支持需手动加头生态较新最成熟个人自托管项目选 Caddy：省心程度碾压。超大规模、极致性能调优场景再用 Nginx。六、运维相关 sudo systemctl reload caddy # 改配置后重载 sudo journalctl -u caddy -f # 看日志 sudo caddy validate --config /etc/caddy/Caddyfile # 校验配置 sudo caddy fmt --overwrite /etc/caddy/Caddyfile # 自动格式化证书自动存放在 /var/lib/caddy/.local/share/caddy/，无需人工管理。七、总结需求 Caddyfile 反代应用 reverse_proxy 127.0.0.1:端口静态站 root * 目录 + file_server 多站点多个域名块本地 HTTPS localhost { tls internal } 一句话总结：把域名的 A 记录指向服务器，写两行配置，HTTPS 就自己长出来了。这就是 Caddy 的价值。