Caddy:默认自动 HTTPS 的 Web 服务器

文章目录

  • Caddy:默认自动 HTTPS 的 Web 服务器
    • 1、这玩意儿是干嘛的
    • 2、为什么要用它
    • 3、核心能力
    • 4、怎么安装
    • 5、适合哪些人用

Caddy:默认自动 HTTPS 的 Web 服务器

Caddy 在 GitHub 上已经拿到 73,631 Star 了。

这是一个用 Go 写的 Web 服务器,2014 年由 Matthew Holt 开始开发。它的定位很明确:一个可扩展的服务器平台,默认启用 HTTPS。

1、这玩意儿是干嘛的

Caddy 主要做两件事:当 Web 服务器,以及当运行 Go 程序的平台。

作为 Web 服务器,它支持 HTTP/1.1、HTTP/2、HTTP/3,能自动申请和续期 TLS 证书。对外域名用 Let’s Encrypt 或 ZeroSSL,内网名称和 IP 则走它内置的本地 CA。配置可以用 Caddyfile,也可以用原生 JSON,还能通过 JSON API 动态修改。

作为平台,Caddy 的模块机制允许你扩展它的行为。标准发行版就带了 tls 和 http 两个核心模块,其他功能可以通过插件加入。

2、为什么要用它

配置 HTTPS 对很多项目来说都是个坎。你要申请证书、配置续期、处理 OCSP、保证证书不丢。Caddy 把这些事全包了,开箱就是 HTTPS。

它还把配置集中在一个文档里。不像有些服务器要同时管命令行参数、环境变量和配置文件,Caddy 的配置文档就是全部状态,管理起来更直接。

对 Go 开发者来说,Caddy 也是个不错的基底。它是用 Go 写的,没有外部依赖,甚至不依赖 libc,跨平台编译和部署都比较顺手。

3、核心能力

Caddy 的功能列表很长,挑几个实用的说:

  • Caddyfile:类 NGINX 的文本配置格式,适合快速上手。
  • JSON API:可以动态加载、热更新配置,不用重启进程。
  • 配置适配器:不喜欢 JSON 可以转 Caddyfile、YAML、TOML、NGINX 配置等。
  • 自动 HTTPS:默认开启,支持公网域名和内网 IP。
  • 多协议:HTTP/1.1、HTTP/2、HTTP/3 一起支持。
  • 模块化:插件机制让它能做很多额外的事。
  • 无依赖:单个二进制文件就能跑。

4、怎么安装

最简单的方式是去 Releases 页面下载对应平台的可执行文件,放进 PATH 里就能用。也可以从源码编译:

gitclone<仓库地址>cdcaddy/cmd/caddy/ go build

如果要加插件或者指定版本,官方提供了 xcaddy 工具:

xcaddy build

详细安装步骤可以参考官方文档。

5、适合哪些人用

  • 需要快速上线 HTTPS 站点的个人或团队
  • 不想维护证书续期和 TLS 配置的运维
  • 想用 Go 扩展服务器行为的开发者
  • 需要同时支持现代 HTTP 协议的项目

Caddy 已经生产环境运行多年,官方说它处理过数万亿次 HTTPS 请求,管理过数百万张证书。如果你正在找一个配置简单、默认安全的 Web 服务器,它值得看看。

官方说它处理过数万亿次 HTTPS 请求,管理过数百万张证书。如果你正在找一个配置简单、默认安全的 Web 服务器,它值得看看。