ITADN
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

Caddy

一个 项目


每个 HTTPS 站点

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

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

      @caddyserver on Twitter   Caddy Forum
Caddy on Sourcegraph   Cloudsmith

提供支持
CertMagic


菜单

功能

  • 通过 Caddyfile 实现易于配置
  • 通过其原生 JSON 配置实现强大的配置
  • 通过 JSON API 实现动态配置
  • 如果您不喜欢 JSON,可以使用配置适配器
  • 默认启用自动 HTTPS
    • 为公共域名提供 ZeroSSLLet's Encrypt
    • 为内部域名和 IP 提供完全托管的本地 CA
    • 可以与集群中的其他 Caddy 实例进行协调
    • 多颁发机构回退
    • 支持 Encrypted ClientHello (ECH)
  • 当其他服务器因 TLS/OCSP/证书相关问题而宕机时,保持运行
  • 在提供数万亿次请求并管理数百万个 TLS 证书后,达到生产就绪状态
  • 经过生产环境验证,可扩展至数十万个站点
  • 默认支持 HTTP/1.1、HTTP/2 和 HTTP/3
  • 高度可扩展模块化架构让 Caddy 在不臃肿的情况下实现任何功能
  • 随处运行无外部依赖(甚至不需要 libc)
  • 使用 Go 编写,这是一种比其他服务器具有更高内存安全保证的语言
  • 实际上使用起来很有趣
  • 还有更多内容可供探索

安装

最简单、跨平台的入门方式是下载 Caddy 的 GitHub Releases 并将可执行文件放入您的 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. Create a new folder: mkdir caddy
  2. Change into it: cd caddy
  3. Copy Caddy's main.go into the empty folder. Add imports for any custom plugins you want to add.
  4. Initialize a Go module: go mod init caddy
  5. (Optional) Pin Caddy version: go get github.com/caddyserver/caddy/v2@version replacing version with a git tag, commit, or branch name.
  6. (Optional) Add plugins by adding their import: _ "import/path/here"
  7. Compile: go build -tags=nobadger,nomysql,nopgx

快速入门

Caddy 网站 提供了包含教程、快速入门指南、参考文档等内容的文档。

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

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

概述

Caddy 最常用作 HTTPS 服务器,但它适用于任何长期运行的 Go 程序。首先,它是一个运行 Go 应用程序的平台。Caddy "apps" 只是实现为 Caddy 模块的 Go 程序。两个 apps -- tlshttp -- 随 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 上免费互助。请记住,人们是利用业余时间和善意提供帮助的。获得帮助的最佳方式是先提供帮助!

请仅将我们的 issue tracker 用于 bug 报告和功能请求,即可执行的开发项目(支持问题通常会被引导至论坛)。

关于

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

“Caddy” 名称受商标保护。 该软件的名称是 “Caddy”,而非 “Caddy Server” 或 “CaddyServer”。请将其称为 “Caddy”,或者,如果您希望加以澄清,可称为 “Caddy web server”。Caddy 是 Stack Holdings GmbH 的注册商标。

Caddy 是 ZeroSSL 的项目,ZeroSSL 是 HID Global 旗下公司。

Debian 软件包仓库托管由 Cloudsmith 慷慨提供。Cloudsmith 是唯一完全托管、云原生的通用软件包管理解决方案,使您的组织能够以任意格式、在任何位置创建、存储和共享软件包,并拥有完全的信任。