<p align="center"> <a href="https://caddyserver.com"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://github.com/user-attachments/assets/1d6be89c-df8a-438c-b01d-cef6bf56440a"> <source media="(prefers-color-scheme: light)" srcset="https://github.com/user-attachments/assets/3a5b7419-6925-48f6-ae75-d231f4a4f0c2"> <img src="https://github.com/user-attachments/assets/3a5b7419-6925-48f6-ae75-d231f4a4f0c2" alt="Caddy" width="550"> </picture> </a> <br> <h3 align="center">一个 <a href="https://zerossl.com"><img src="https://user-images.githubusercontent.com/55066419/208327323-2770dc16-ec09-43a0-9035-c5b872c2ad7f.svg" height="28" style="vertical-align: -7.7px" valign="middle"></a> 项目</h3> </p> <hr> <h3 align="center">让每个站点都使用 HTTPS</h3> <p align="center">Caddy 是一个可扩展的服务器平台,默认使用 TLS。</p> <p align="center"> <a href="https://github.com/caddyserver/caddy/releases">版本发布</a> · <a href="https://caddyserver.com/docs/">文档</a> · <a href="https://caddy.community">获取帮助</a> </p> <p align="center"> <a href="https://github.com/caddyserver/caddy/actions/workflows/ci.yml"><img src="https://github.com/caddyserver/caddy/actions/workflows/ci.yml/badge.svg"></a> <a href="https://www.bestpractices.dev/projects/7141"><img src="https://www.bestpractices.dev/projects/7141/badge"></a> <a href="https://pkg.go.dev/github.com/caddyserver/caddy/v2"><img src="https://img.shields.io/badge/godoc-reference-%23007d9c.svg"></a> <a href="https://x.com/caddyserver" title="@caddyserver on Twitter"><img src="https://img.shields.io/twitter/follow/caddyserver" alt="@caddyserver on Twitter"></a> <a href="https://caddy.community" title="Caddy Forum"><img src="https://img.shields.io/badge/community-forum-ff69b4.svg" alt="Caddy Forum"></a> <br> <a href="https://sourcegraph.com/github.com/caddyserver/caddy?badge" title="Caddy on Sourcegraph"><img src="https://sourcegraph.com/github.com/caddyserver/caddy/-/badge.svg" alt="Caddy on Sourcegraph"></a> <a href="https://cloudsmith.io/~caddy/repos/"><img src="https://img.shields.io/badge/OSS%20hosting%20by-cloudsmith-blue?logo=cloudsmith" alt="Cloudsmith"></a> </p> <p align="center"> <b>技术支持来自</b> <br> <a href="https://github.com/caddyserver/certmagic"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/55066419/206946718-740b6371-3df3-4d72-a822-47e4c48af999.png"> <source media="(prefers-color-scheme: light)" srcset="https://user-images.githubusercontent.com/1128849/49704830-49d37200-fbd5-11e8-8385-767e0cd033c3.png"> <img src="https://user-images.githubusercontent.com/1128849/49704830-49d37200-fbd5-11e8-8385-767e0cd033c3.png" alt="CertMagic" width="250"> </picture> </a> </p> <!-- Warp sponsorship requests this section --> <div align="center" markdown="1"> <hr> <sup>特别感谢:</sup> <br> <a href="https://go.warp.dev/caddy"> <img alt="Warp sponsorship" width="400" src="https://github.com/user-attachments/assets/c8efffde-18c7-4af4-83ed-b1aba2dda394"> </a> ### [Warp,专为多 AI 代理协同编码而打造](https://go.warp.dev/caddy) [支持 MacOS、Linux 和 Windows](https://go.warp.dev/caddy)<br> </div> <hr> ### 目录 - [功能特性](#features) - [安装](#install) - [从源码构建](#build-from-source) - [用于开发](#for-development) - [包含版本信息和/或插件](#with-version-information-andor-plugins) - [快速开始](#quick-start) - [概述](#overview) - [完整文档](#full-documentation) - [获取帮助](#getting-help) - [关于](#about) ## [功能特性](https://caddyserver.com/features) - 使用 [Caddyfile](https://caddyserver.com/docs/caddyfile) 实现**简单配置** - 使用[原生 JSON 配置](https://caddyserver.com/docs/json/)实现**强大配置** - 通过 [JSON API](https://caddyserver.com/docs/api) 实现**动态配置** - 如果你不喜欢 JSON,可以使用[**配置适配器**](https://caddyserver.com/docs/config-adapters) - 默认**自动 HTTPS** - 对公网域名使用 [ZeroSSL](https://zerossl.com) 和 [Let's Encrypt](https://letsencrypt.org) - 对内部域名和 IP 使用完全托管的本地 CA - 可与集群中的其他 Caddy 实例协调 - 多签发者回退 - 支持加密客户端问候(ECH) - **在其他服务器因 TLS/OCSP/证书相关问题宕机时保持运行** - 在服务了数万亿次请求并管理了数百万份 TLS 证书后,已**达到生产就绪** - 经生产环境验证,**可扩展至数十万个站点** - 默认支持 **HTTP/1.1、HTTP/2 和 HTTP/3** - **高度可扩展**的[模块化架构](https://caddyserver.com/docs/architecture)让 Caddy 能做任何事而不臃肿 - **可在任何地方运行**,**无外部依赖**(甚至不依赖 libc) - 使用 Go 编写,该语言比其他服务器具有更高的**内存安全保障** - 实际上**用起来很有趣** - 还有更多值得[探索](https://caddyserver.com/features) ## 安装 最简单、跨平台的入门方式是从 [GitHub Releases](https://github.com/caddyserver/caddy/releases) 下载 Caddy,并将可执行文件放入你的 PATH 中。 其他安装说明请参阅[我们的在线文档](https://caddyserver.com/docs/install)。 ## 从源码构建 要求: - [Go 1.26.0 或更高版本](https://golang.org/dl/) ### 用于开发 _**注意:** 这些步骤[不会嵌入正确的版本信息](https://github.com/golang/go/issues/29228)。如需嵌入版本信息,请按照下一节的说明操作。_ ```bash $ 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` 来实现,如下所示: ```bash $ go run -exec ./setcap.sh main.go ``` 如果你不想为 `setcap` 输入密码,可以使用 `sudo visudo` 编辑 sudoers 文件,允许你的用户账户无需密码运行该命令,例如: ``` username ALL=(ALL:ALL) NOPASSWD: /usr/sbin/setcap ``` 将 `username` 替换为你的实际用户名。请务必谨慎,仅在你清楚自己在做什么时才这样做!我们只具备记录如何使用 Caddy 的资格,而非 Go 工具链或你的计算机,我们提供这些说明仅为方便起见;请自行承担风险学习如何使用你自己的计算机,并做出任何必要的调整。 然后你可以在所有模块或特定模块中运行测试: ```bash $ go test ./... $ go test ./modules/caddyhttp/tracing/ ``` ### 包含版本信息和/或插件 使用[我们的构建工具 `xcaddy`](https://github.com/caddyserver/xcaddy)... ```bash $ xcaddy build ``` ...以下步骤将自动完成: 1. 创建新文件夹:`mkdir caddy` 2. 进入该文件夹:`cd caddy` 3. 将 [Caddy 的 main.go](https://github.com/caddyserver/caddy/blob/master/cmd/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 网站](https://caddyserver.com/docs/)提供的文档包括教程、快速入门指南、参考手册等。 **我们建议所有用户——无论经验水平如何——都完成我们的[入门指南](https://caddyserver.com/docs/getting-started),以熟悉 Caddy 的使用。** 如果你只有一分钟时间,[网站上提供了多个快速入门教程](https://caddyserver.com/docs/quick-starts)可供选择!不过,在完成快速入门教程后,请阅读更多文档以了解该软件的工作原理。🙂 ## 概述 Caddy 最常用作 HTTPS 服务器,但它适用于任何长期运行的 Go 程序。首先,它是一个运行 Go 应用程序的平台。Caddy“应用”只是以 Caddy 模块形式实现的 Go 程序。有两个应用——`tls` 和 `http`——随 Caddy 标准发布。 Caddy 应用立即受益于[自动生成的文档](https://caddyserver.com/docs/json/)、优雅的在线[通过 API 更改配置](https://caddyserver.com/docs/api),以及与其他 Caddy 应用的统一。 尽管 [JSON](https://caddyserver.com/docs/json/) 是 Caddy 的原生配置语言,但 Caddy 可以接受来自[配置适配器](https://caddyserver.com/docs/config-adapters)的输入,这些适配器基本上可以将你选择的任何配置格式转换为 JSON:Caddyfile、JSON 5、YAML、TOML、NGINX 配置等。 配置 Caddy 的主要方式是通过[其 API](https://caddyserver.com/docs/api),但如果你更喜欢配置文件,[命令行界面](https://caddyserver.com/docs/command-line)也支持它们。 与现存的任何 Web 服务器相比,Caddy 提供了前所未有的控制级别。在 Caddy 中,你通常设置的是内存中已初始化类型的实际值,这些值驱动着从 HTTP 处理器和 TLS 握手到存储介质的一切。Caddy 还具有极强的可扩展性,其强大的插件系统对其他 Web 服务器做出了巨大改进。 要驾驭这种设计的能力,你需要了解配置文档的结构。有关 [Caddy 配置结构](https://caddyserver.com/docs/json/)的详细信息,请参阅[我们的文档站点](https://caddyserver.com/docs/)。 Caddy 的几乎所有配置都包含在单个配置文档中,而不是像其他 Web 服务器那样分散在 CLI 标志、环境变量和配置文件中。这使得管理服务器配置更加直接,并减少了隐藏的变量/因素。 ## 完整文档 我们的网站有完整的文档: **https://caddyserver.com/docs/** 文档也是开源的。你可以在这里为其做出贡献:https://github.com/caddyserver/website ## 获取帮助 - 我们建议使用 Caddy 的公司通过 [Ardan Labs](https://www.ardanlabs.com) 在需要帮助之前签订支持合同。 - [赞助](https://github.com/sponsors/mholt)大有帮助!我们可以为赞助者提供私人帮助。如果 Caddy 正在为你的公司带来益处,请考虑赞助。这不仅有助于资助全职工作以确保项目的长期发展,还为你的公司提供所需的资源、支持和折扣;同时也能为你的公司向客户和潜在客户树立良好形象! - 个人可以在我们的社区论坛 https://caddy.community 免费交流帮助。请记住,人们是出于业余时间和善意提供帮助的。获得帮助的最佳方式是先给予帮助! 请仅将我们的[问题跟踪器](https://github.com/caddyserver/caddy/issues)用于错误报告和功能请求,即可操作的开发事项(支持问题通常会转至论坛)。 ## 关于 Matthew Holt 于 2014 年在杨百翰大学学习计算机科学时开始开发 Caddy。(选择“Caddy”这个名字是因为该软件有助于处理服务 Web 的繁琐、平凡的任务,同时也是将多个事物组织在一起的单一场所。)它很快成为第一个自动且默认使用 HTTPS 的 Web 服务器,如今拥有数百名贡献者,并已服务了数万亿次 HTTPS 请求。 **“Caddy”这个名字是注册商标。** 该软件的名称是“Caddy”,而不是“Caddy Server”或“CaddyServer”。请称其为“Caddy”,或者如果你想加以说明,可称为“the Caddy web server”。Caddy 是 Stack Holdings GmbH 的注册商标。 - _X 上的项目:[ @caddyserver ](https://x.com/caddyserver)_ - _X 上的作者:[ @mholt6 ](https://x.com/mholt6)_ Caddy 是 [ZeroSSL](https://zerossl.com)(HID Global 旗下公司)的一个项目。 Debian 软件包仓库托管由 [Cloudsmith](https://cloudsmith.com) 慷慨提供。Cloudsmith 是唯一完全托管、云原生的通用软件包管理解决方案,使你的组织能够以任何格式、在任何地点、充满信心地创建、存储和共享软件包。