返回更新列表
新发布Oct 3, 2026

caddy v2.11.7

快速且可扩展的多平台 HTTP/1-2-3 Web 服务器,支持自动 HTTPS。

分享

Caddy

一个 项目


让每个站点都使用 HTTPS

Caddy 是一个可扩展的服务器平台,默认使用 TLS。

版本发布 · 文档 · 获取帮助

      @caddyserver on Twitter   Caddy Forum
Caddy on Sourcegraph   Cloudsmith

技术支持来自
CertMagic


目录

功能特性

  • 使用 Caddyfile 实现简单配置
  • 使用原生 JSON 配置实现强大配置
  • 通过 JSON API 实现动态配置
  • 如果你不喜欢 JSON,可以使用配置适配器
  • 默认自动 HTTPS
    • 对公网域名使用 ZeroSSL 和 Let's Encrypt
    • 对内部域名和 IP 使用完全托管的本地 CA
    • 可与集群中的其他 Caddy 实例协调
    • 多签发者回退
    • 支持加密客户端问候(ECH)
  • 在其他服务器因 TLS/OCSP/证书相关问题宕机时保持运行
  • 在服务了数万亿次请求并管理了数百万份 TLS 证书后,已达到生产就绪
  • 经生产环境验证,可扩展至数十万个站点
  • 默认支持 HTTP/1.1、HTTP/2 和 HTTP/3
  • 高度可扩展的模块化架构让 Caddy 能做任何事而不臃肿
  • 可在任何地方运行,无外部依赖(甚至不依赖 libc)
  • 使用 Go 编写,该语言比其他服务器具有更高的内存安全保障
  • 实际上用起来很有趣
  • 还有更多值得探索

安装

最简单、跨平台的入门方式是从 GitHub Releases 下载 Caddy,并将可执行文件放入你的 PATH 中。

其他安装说明请参阅我们的在线文档。

从源码构建

要求:

用于开发

注意: 这些步骤不会嵌入正确的版本信息。如需嵌入版本信息,请按照下一节的说明操作。

$ git clone "https://github.com/caddyserver/caddy.git"
$ cd caddy/cmd/caddy/
$ go build

运行 Caddy 时,除非在配置中另行指定,否则它可能会尝试绑定低端口。如果你的操作系统对此要求提升权限,你需要授予新二进制文件相应权限。在 Linux 上,可以轻松通过以下命令完成:sudo setcap cap_net_bind_service=+ep ./caddy

如果你更倾向于使用 go run(它只创建临时二进制文件),你仍然可以通过附带的 setcap.sh 来实现,如下所示:

$ go run -exec ./setcap.sh main.go

如果你不想为 setcap 输入密码,可以使用 sudo visudo 编辑 sudoers 文件,允许你的用户账户无需密码运行该命令,例如:

username ALL=(ALL:ALL) NOPASSWD: /usr/sbin/setcap

将 username 替换为你的实际用户名。请务必谨慎,仅在你清楚自己在做什么时才这样做!我们只具备记录如何使用 Caddy 的资格,而非 Go 工具链或你的计算机,我们提供这些说明仅为方便起见;请自行承担风险学习如何使用你自己的计算机,并做出任何必要的调整。

然后你可以在所有模块或特定模块中运行测试:

$ go test ./...
$ go test ./modules/caddyhttp/tracing/

包含版本信息和/或插件

使用我们的构建工具 xcaddy...

$ xcaddy build

...以下步骤将自动完成:

  1. 创建新文件夹:mkdir caddy
  2. 进入该文件夹:cd caddy
  3. 将 Caddy 的 main.go 复制到空文件夹中。为你想要添加的任何自定义插件添加导入。
  4. 初始化 Go 模块:go mod init caddy
  5. (可选)固定 Caddy 版本:go get github.com/caddyserver/caddy/v2@version,将 version 替换为 git 标签、提交或分支名称。
  6. (可选)通过添加导入来添加插件:_ "import/path/here"
  7. 编译:go build -tags=nobadger,nomysql,nopgx

快速开始

Caddy 网站提供的文档包括教程、快速入门指南、参考手册等。

我们建议所有用户——无论经验水平如何——都完成我们的入门指南,以熟悉 Caddy 的使用。

如果你只有一分钟时间,网站上提供了多个快速入门教程可供选择!不过,在完成快速入门教程后,请阅读更多文档以了解该软件的工作原理。🙂

概述

Caddy 最常用作 HTTPS 服务器,但它适用于任何长期运行的 Go 程序。首先,它是一个运行 Go 应用程序的平台。Caddy“应用”只是以 Caddy 模块形式实现的 Go 程序。有两个应用——tls 和 http——随 Caddy 标准发布。

Caddy 应用立即受益于自动生成的文档、优雅的在线通过 API 更改配置,以及与其他 Caddy 应用的统一。

尽管 JSON 是 Caddy 的原生配置语言,但 Caddy 可以接受来自配置适配器的输入,这些适配器基本上可以将你选择的任何配置格式转换为 JSON:Caddyfile、JSON 5、YAML、TOML、NGINX 配置等。

配置 Caddy 的主要方式是通过其 API,但如果你更喜欢配置文件,命令行界面也支持它们。

与现存的任何 Web 服务器相比,Caddy 提供了前所未有的控制级别。在 Caddy 中,你通常设置的是内存中已初始化类型的实际值,这些值驱动着从 HTTP 处理器和 TLS 握手到存储介质的一切。Caddy 还具有极强的可扩展性,其强大的插件系统对其他 Web 服务器做出了巨大改进。

要驾驭这种设计的能力,你需要了解配置文档的结构。有关 Caddy 配置结构的详细信息,请参阅我们的文档站点。

Caddy 的几乎所有配置都包含在单个配置文档中,而不是像其他 Web 服务器那样分散在 CLI 标志、环境变量和配置文件中。这使得管理服务器配置更加直接,并减少了隐藏的变量/因素。

完整文档

我们的网站有完整的文档:

https://caddyserver.com/docs/

文档也是开源的。你可以在这里为其做出贡献:https://github.com/caddyserver/website

获取帮助

  • 我们建议使用 Caddy 的公司通过 Ardan Labs 在需要帮助之前签订支持合同。

  • 赞助大有帮助!我们可以为赞助者提供私人帮助。如果 Caddy 正在为你的公司带来益处,请考虑赞助。这不仅有助于资助全职工作以确保项目的长期发展,还为你的公司提供所需的资源、支持和折扣;同时也能为你的公司向客户和潜在客户树立良好形象!

  • 个人可以在我们的社区论坛 https://caddy.community 免费交流帮助。请记住,人们是出于业余时间和善意提供帮助的。获得帮助的最佳方式是先给予帮助!

请仅将我们的问题跟踪器用于错误报告和功能请求,即可操作的开发事项(支持问题通常会转至论坛)。

关于

Matthew Holt 于 2014 年在杨百翰大学学习计算机科学时开始开发 Caddy。(选择“Caddy”这个名字是因为该软件有助于处理服务 Web 的繁琐、平凡的任务,同时也是将多个事物组织在一起的单一场所。)它很快成为第一个自动且默认使用 HTTPS 的 Web 服务器,如今拥有数百名贡献者,并已服务了数万亿次 HTTPS 请求。

分类