Caddy
Caddy 是一款用 Go 编写的现代化 Web 服务器,默认启用自动 HTTPS,支持 HTTP/1.1、HTTP/2 与 HTTP/3,可通过 Caddyfile 或 JSON 灵活配置,并具备反向代理与模块化扩展能力。
过去 7 天收获 2 颗 Star
爱鲜报评分
0 人评分
79k
星数
否
中文
Go
主语言
是
活跃
469
贡献者
人工分析
EDITORIAL推荐理由
Caddy 最大的价值在于「开箱即用的自动 HTTPS」:只需写好域名,证书申请与续期全自动完成,省去大量运维成本。它同时支持 HTTP/3、反向代理和动态 JSON API 配置,适合替代 Nginx 作为新一代边缘入口。项目星数近 8 万、生产环境验证充分,是 Go 生态中最成熟的服务器之一。
适用场景
- 个人或团队站点快速上线 HTTPS
- 反向代理与多站点托管
- 内网服务自动签发本地证书
- 容器/K8s 环境下的边缘网关
- 需要 HTTP/3 或动态配置的 API 网关
优点
- 默认自动 HTTPS,证书申请与续期全自动
- 单一静态二进制,无外部依赖,跨平台部署简单
- 原生支持 HTTP/1.1、HTTP/2、HTTP/3
- Caddyfile 语法简洁,JSON API 支持动态热更新
- 模块化架构,插件生态丰富,易于扩展
缺点
- 配置模型与 Nginx 差异较大,迁移需重新学习
- 复杂场景下 JSON 配置可读性不如传统配置文件
- 插件需通过 xcaddy 重新编译,不能运行时随意加载
- 中文资料相对英文社区偏少,排错依赖官方文档
Caddy 是什么
Caddy 是一个用 Go 编写的可扩展 Web 服务器平台,核心理念是 默认使用 TLS——只要配置了域名,它就会自动申请并续期证书,让「每个站点都上 HTTPS」成为默认行为而非额外工作。
它同时支持 HTTP/1.1、HTTP/2 和 HTTP/3,内置反向代理、静态文件服务、负载均衡等常用能力,并以单一静态二进制形式分发,不依赖 libc 等系统库。
核心特性
- 自动 HTTPS:对接 Let's Encrypt、ZeroSSL 等公共 CA,内网域名与 IP 则由本地 CA 签发;支持多签发方回退与集群协同。
- 两种配置方式:人类友好的
Caddyfile与表达力更强的原生 JSON 配置,还可通过 JSON API 在运行时动态修改。 - 配置适配器:可将 Caddyfile、Nginx 配置等转换为内部 JSON 配置。
- 模块化架构:HTTP 处理、TLS、存储、日志等均为可插拔模块,按需组合而不臃肿。
- 生产验证:已在海量请求与数百万张证书的场景下运行,可扩展到数十万站点。
快速上手
最简方式是从 GitHub Releases 下载对应平台的可执行文件并放入 PATH。一个典型的 Caddyfile 只需几行:
example.com {
reverse_proxy localhost:8080
}
启动后 Caddy 会自动为 example.com 申请证书并开启 HTTPS,无需额外配置。
从源码构建
需要 Go 1.26 及以上版本。开发调试可直接在 cmd/caddy/ 目录下执行 go build;若需要嵌入版本信息或集成第三方插件,推荐使用官方构建工具 xcaddy:
xcaddy build
在 Linux 上监听 80/443 等低端口时,可通过 setcap 授予二进制绑定权限,避免以 root 运行。
适用与注意
Caddy 非常适合个人站点、反向代理网关和容器化部署场景。不过它的配置模型与 Nginx 差异明显,已有 Nginx 配置迁移时需要重新梳理;插件需在编译期通过 xcaddy 引入,无法像动态模块那样随时加载。建议先跟随官方 Getting Started 文档走一遍,再逐步替换生产环境入口。
评论
- 暂无评论,来写第一条吧。