一个 项目
所有网站都使用HTTPS
Caddy是一个可扩展的服务器平台,默认使用TLS。
菜单
特性
- 使用Caddyfile进行简单配置
- 使用其原生JSON配置进行强大配置
- 使用JSON API进行动态配置
- 如果你不喜欢JSON,可以使用配置适配器
- 默认自动HTTPS
- 公共名称使用ZeroSSL和Let'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
...以下步骤将自动完成:
- 创建一个新文件夹:
mkdir caddy
- 进入该文件夹:
cd caddy
- 将Caddy的main.go复制到空文件夹中。添加您想要添加的任何自定义插件的导入。
- 初始化Go模块:
go mod init caddy
- (可选)固定Caddy版本:
go get github.com/caddyserver/caddy/v2@version
,将version
替换为git标签、提交或分支名称。 - (可选)通过添加导入来添加插件:
_ "import/path/here"
- 编译:
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://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网络服务器"。Caddy是Stack Holdings GmbH的注册商标。
- 项目Twitter:@caddyserver
- 作者Twitter:@mholt6
Caddy是ZeroSSL的一个项目,ZeroSSL是Stack Holdings公司旗下的企业。
Debian软件包存储库托管由Cloudsmith慷慨提供。Cloudsmith是唯一完全托管、云原生、通用的软件包管理解决方案,使您的组织能够以完全的信心创建、存储和分享任何格式的软件包到任何地方。