ArcLibrary

Caddy

自动 HTTPS、极简配置 —— 个人 / 小团队部署的甜点。

CaddyHTTPS反代
核心 · Key Idea

一句话:Caddy 是 Go 写的 web 服务器,默认开启 HTTPS —— 自动从 Let's Encrypt 申请、自动续期、自动 HTTP→HTTPS 跳转。配置极简,Caddyfile 5 行能上线一个反代

是什么#

# 整个 Caddyfile 就这么短:
api.example.com {
    reverse_proxy localhost:8080
}
 
static.example.com {
    root * /var/www/site
    file_server
    encode gzip zstd
}

启动 caddy run 就有 HTTPS、HTTP/2、HTTP/3、自动证书 —— 零证书配置

打个比方#

打个比方 · Analogy

nginx 像专业相机:旋钮一堆,能拍出大片,但门槛高。
Caddy 像手机相机:按下快门就好,自动对焦 / 测光 / HDR —— 90% 场景拍得比相机还省心。

关键概念#

Caddyfile配置语法
极简 DSL,按域名分块写。也支持 JSON 配置(更精细)。
Auto HTTPS自动 HTTPS
支持 ACME(Let's Encrypt / ZeroSSL)。本地局域网域名也能用 internal CA。
On-demand TLS按需签发
用户来访问时再申请证书,适合多租户海量域名。
Modules模块化
用 xcaddy 编译时按需引入插件(DNS provider、storage backend 等)。
Admin API动态配置
本地 :2019 接口,可热更新配置无需 reload。

怎么工作#

整个证书生命周期对你完全透明

实操要点#

  • 要求 80 / 443 公开可达:ACME HTTP-01 / TLS-ALPN 挑战需要这两个端口。或用 DNS 挑战(DNS-01)走 Cloudflare 等 API 自动签。
  • HTTP/3 默认开:浏览器 + 客户端只要支持都会用上。
  • 本地开发caddy run 也能给 localhost 发 internal CA 证书,浏览器装根证书后无警告。
  • 反代写后端 IPv6reverse_proxy [::1]:8080,括号别忘。
  • 结合 Tailscale / 内网域*.ts.example.com + DNS-01 + Tailscale 内网 IP,几行配置实现「外网不可达,但内部走 HTTPS」。
  • 生产 + 多实例:用同一份 storage(Redis / S3)共享证书,避免重复签发触发 LE 限流。

易混点#

Caddy
单进程 + Caddyfile。
适合手动 / 小规模 / 简洁部署。
Traefik
动态发现服务(Docker / K8s)。
适合容器编排环境。

延伸阅读#