跳到正文

什么是 Caddy

用一份短得不像配置的 Caddyfile,拿到反向代理、自动 HTTPS 和 HTTP/3。

自动 HTTPS

证书签发、续期、HTTP/2、HTTP/3 全部自动。不需要 certbot,不需要定时任务。

一行反代

reverse_proxy localhost:9000 就够了。SNI 路由、负载均衡、WebSocket 都是内置的。

单个二进制

静态编译的 Go 程序,零运行时依赖。下载、解压、运行,三步结束。

先看配置长什么样

章节「先看配置长什么样」

这是最常见的生产配置,一个反向代理加自动 HTTPS:

api.example.com {
encode gzip zstd
reverse_proxy localhost:8080
}

对比一下 Nginx 做同样的事:要写 server 块、location 块,再额外跑一个 certbot 加 cron 续期。这套配置的价值就在这个差值里。

想看完整的演进过程,从 第一个 Caddyfile 开始。

Caddy 不是 Nginx 的换皮,它的目标是用最少的配置表达最多的意图。

  • 个人站 / 博客 —— 静态文件丢进目录,file_server 就完事,HTTPS 自动带上。
  • API 网关 —— 几个后端按域名分流,几十行 Caddyfile 搞定。
  • 内网工具 —— 给 NAS、Jupyter、Home Assistant 套一层带证书的 HTTPS。
  • 需要 WebSocket / gRPC / HTTP/3 —— 都是默认能力,不用单独编译。
Caddy Nginx
HTTPS 证书 自动签发与续期 需 certbot + cron
配置文件 Caddyfile(易读 DSL) nginx.conf(指令式,易错)
改完配置生效 caddy reload,几乎无感 通常要 reload
依赖 单个静态二进制 动态库 + 脚本生态
HTTP/3 默认开启 需编译时开启