73

0

Caddy

具有自动 HTTPS 的快速且可扩展的多平台 HTTP/3 Web 服务器

球童

HTTPS 上的每个站点

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

推特上的@caddyserver 球童论坛 Sourcegraph 上的球童 云匠

发布· 文档· 获取帮助

菜单

Powered by 证书魔术

特征

  • 使用Caddyfile轻松配置
  • 强大的配置及其原生 JSON 配置
  • 使用JSON API进行动态配置
  • 如果您不喜欢 JSON,请配置适配器
  • 默认 自动 HTTPS
    • ZeroSSLLet's Encrypt用于公共名称
    • 用于内部名称和 IP 的完全托管的本地 CA
    • 可以与集群中的其他 Caddy 实例协调
    • 多发行人后备
  • 当其他服务器因 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 工具或您的计算机,我们提供这些说明只是为了方便;请自担风险学习如何使用自己的计算机并进行必要的调整。

带有版本信息和/或插件

使用我们的构建器工具,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

快速开始

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 请求。

“Caddy”名称已注册商标。 该软件的名称是“Caddy”,而不是“Caddy Server”或“CaddyServer”。请称其为“Caddy”,或者,如果您想澄清,请称其为“Caddy Web 服务器”。Caddy 是 Stack Holdings GmbH 的注册商标。

Caddy 是Stack Holdings 公司ZeroSSL的一个项目。

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