AX 爱鲜报

Caddy

Caddy 是一款用 Go 编写的现代化 Web 服务器,默认启用自动 HTTPS,支持 HTTP/1.1、HTTP/2 与 HTTP/3,可通过 Caddyfile 或 JSON 灵活配置,并具备反向代理与模块化扩展能力。

过去 7 天收获 2 颗 Star

爱鲜报评分

0.0

0 人评分

开源 · Apache-2.0 #Web #Go #DevOps #反向代理 #HTTPS #HTTP3

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 文档走一遍,再逐步替换生产环境入口。

评论

登录后才可评论与评分

0 条评论

  • 暂无评论,来写第一条吧。