网站上
HTTPS
默认情况下,Caddy 自动获取并续订所有网站的 TLS 证书。
自定义域的 HTTPS/TLS
几乎每个白标 SaaS 的秘诀是 Caddy 最初的按需 TLS 功能。轻松地将您的 SaaS 业务增长几个数量级!
动态配置证书
借助按需 TLS,只有 Caddy 会在 TLS 握手期间即时获取、续订和维护证书。非常适合客户拥有的域。
大规模扩展您的 TLS
其他 Web 服务器和脚本证书工具在处理数十万个网站或数千个实例时会崩溃。Caddy 旨在在此规模下可靠地管理证书。
全球最先进的 HTTPS 服务器
您对 TLS 和 PKI 的所有需求 🔐
Caddy 默认安全地为所有网站提供 TLS 服务。它还可以在服务器和客户端机群中为您管理内部 PKI。
在线配置 API ⚡️
Caddy 的本机配置是一个 JSON 文档,您可以使用 RESTful 配置 API 导出和操作它。
符合 PCI、HIPAA 和 NIST ✅
Caddy 的 TLS 默认设置是安全的,并通过了 PCI、HIPAA 和 NIST 合规性要求。是的,默认设置:无需麻烦。
本地主机的 HTTPS 🏠
当我们说 Caddy 为每个网站提供 HTTPS 服务时,我们是认真的。即使是本地主机和内部 IP 也使用 TLS 提供服务,并使用完全自动、自我管理的 CA 的中间证书,该证书会自动安装到大多数本地信任存储中。
集群协调 🌐
只需使用相同的存储配置多个 Caddy 实例,它们就会自动协调证书管理,并共享密钥和 OCSP 订书钉等资源!
更少的活动部件 ⚙️
简化您的基础设施!Caddy 节省资金、提高开发人员的工作效率并减少生产中的问题。
体验它
通过我们的托管演示发现 Caddy 的自动 HTTPS 功能。
将名为caddydemo
的任何子域的 DNS 记录指向
CNAME demo.caddyserver.com
或
A 138.68.4.62
AAAA 2604:a880:2:d0::9dd:9001
然后在您的浏览器中访问它。
您会注意到 Caddy 如何自动为您的域配置证书。
无法使用?请确保使用已注册域名的直接子域,而不是“子子域”。验证您已使用正确的值创建了上面所示的公共 DNS 记录。您可能需要留出时间进行传播。请查阅您的 DNS 提供商的文档或寻求支持。您的浏览器/客户端必须设置 TLS 服务器名称指示(大多数浏览器都已设置)。
可能有效的子域示例:caddydemo.example.net
、caddydemo.example.com.au
Caddy 能够为任何域和 IP 提供 TLS 服务。此演示已有意限制。
使用 Caddy 部署您自己的 PKI
Caddy 不仅是证书自动化领域的行业领导者,还为您的全自动内部 PKI 和私有 CA 提供了一套功能齐全的 PKI 套件。
在开源 Smallstep 库 的支持下,Caddy 成为一个自我管理的证书颁发机构。
localhost {
respond "Hello from HTTPS!"
}
192.168.1.10 {
respond "Also HTTPS!"
}
https://127.0.0.1 {
respond "Plain HTTP"
}
制作并使用您自己的 CA
Caddy 让您可以根据需要定义任意数量的 CA。根密钥和中间密钥会自动生成,并且中间密钥会在过期前续订。
部署一个实例以充当 ACME 服务器。然后,其他 Caddy 实例可以使用它来获取其证书。
{
pki {
ca corporate {
name "Our Corporation Authority"
}
}
}
internal.example.com {
# ACME endpoint: /acme/corporate/directory
acme_server {
ca corporate
}
}
{
"apps": {
"tls": {
"certificates": {
"automate": [
"example.com",
"sub.example.com",
"example.net"
]
}
}
}
}
保持证书续订
Caddy 不仅仅是一个 Web 服务器。例如,此配置足以获取和续订一组域名证书。
可以编写其他配置来连接证书维护事件,然后可以使用这些事件与外部脚本和工具集成。
专家推荐
学术和行业专家推荐 Caddy,它因其安全默认值、最佳实践和独特的高级功能集而被引用在同行评审期刊中。
“运行 Caddy 的服务器几乎普遍部署了 HTTPS,并使用了现代 TLS 配置。... 我们希望看到其他流行的服务器软件效仿 Caddy。”
—乔希·阿斯、理查德·巴恩斯、本顿·凯斯、扎基尔·杜鲁梅里克、彼得·埃克尔斯利、艾伦·弗洛雷斯-洛佩兹、J·亚历克斯·哈尔德曼、雅各布·霍夫曼-安德鲁斯、詹姆斯·卡斯滕、埃里克·雷斯科拉、塞思·肖恩和布拉德·沃伦。 2019 年。Let's Encrypt:一个自动证书颁发机构,用于加密整个网络。在 2019 年 ACM SIGSAC 计算机和通信安全会议(CCS '19)的会议记录中。美国纽约纽约市计算机协会,2473–2487。 https://doi.org/10.1145/3319535.3363192
“TLS 必须默认启用... 并且 Caddy Web 服务器是一个很好且实用的示例。”
—卡塔琳娜·克伦布霍尔茨、维尔弗里德·迈耶、马丁·施米德克和埃德加·韦普尔。 2017 年。“我不知道自己在做什么”——关于部署 HTTPS 的可用性。在第 26 届 USENIX 安全研讨会(USENIX Security 17)中,USENIX 协会,不列颠哥伦比亚省温哥华,1339-1356。取自 https://www.usenix.org/conference/usenixsecurity17/technical-sessions/presentation/krombholz
“除了 Caddy 之外,没有流行的服务器软件执行 [会话密钥轮换]。”
—德鲁·斯普林加尔、扎基尔·杜鲁梅里克和 J·亚历克斯·哈尔德曼。 2016 年。衡量 TLS 加密捷径的安全危害。在 2016 年互联网测量会议(IMC '16)的会议记录中,美国加利福尼亚州圣莫尼卡计算机协会,33-47。 https://doi.org/10.1145/2987443.2987480
一个有前瞻性的反向代理
Caddy 的代理被设计为尽可能向前兼容,并包含主要的电池:负载均衡、主动和被动健康检查、动态上游、重试、可插入传输,当然还有同类最佳的 TLS 安全性。
代理 HTTP、FastCGI、WebSockets 等
能够代理 HTTP 和 HTTPS,还可以代理 WebSockets、gRPC、FastCGI(通常是 PHP)等!底层传输模块可扩展,可用于生成 HTTP 响应的任何自定义方式。
动态后端
向 Caddy 提供后端的静态列表,或启用模块在每次请求期间动态检索后端:非常适合快速变化的环境。Caddy 随您的基础设施一起流动!
高可用性
Caddy 随附一整套高可用性 (HA) 功能:高级运行状况检查、优雅(无命中)配置更改、断路、负载限制、在线重试等等。最棒的部分是什么?它完全免费。没有企业级付费墙。
example.com
# Serve PHP sites
handle /blog/* {
root * /var/www/wordpress
php_fastcgi localhost:9000
file_server
}
# Proxy an autoscaling API with dynamic backends
reverse_proxy /api/* {
dynamic srv _api._tcp.example.com
}
# Proxy a compute-heavy distributed service
# with load balancing and health checks
reverse_proxy /service/* {
to 10.0.1.1:80 10.0.1.2:80 10.0.1.3:80
lb_policy least_conn
lb_try_duration 10s
fail_duration 5s
}
# Proxy everything else to an HTTPS upstream
reverse_proxy https://service.example.com {
header_up Host {upstream_hostport}
}
生产级静态文件服务器
提供静态文件是一种久经考验的方法,可高效地向众多客户端交付网站。Caddy 拥有一个强大的文件服务器,可以与其他中间件功能结合使用,打造终极轻松网站。
压缩
Caddy 可以动态压缩文件或提供预压缩文件以获得额外的性能。Caddy 也是第一个支持 Zstandard 编码的 Web 服务器。
虚拟文件系统
从任何地方提供您的静态网站:本地文件系统、远程云存储、数据库,甚至嵌入在服务器二进制文件中!
范围请求、Etag 等
与许多旨在用于临时本地开发的临时文件服务器不同,Caddy 完全支持范围请求、Etag 和全面的生产功能集。
目录文件浏览器
如果请求的目录没有索引文件,Caddy 可以显示一个优雅的文件浏览器,其中包含面包屑导航、文件大小可视化、文件类型图标和网格视图。
example.com
root * /var/www
# Serve precompressed files if present
file_server /downloads/* {
precompressed gzip zstd br
}
# Compress everything else that would benefit
encode zstd gzip
# Static site using database as file system
file_server /database/* {
fs sqlite data.sql
}
# Static site embedded within the Caddy binary
file_server /embedded/* {
fs embedded
}
# (Range/Etag/etc. all work without extra config)
# Serve static site with directory listings
file_server browse
与任何工作流兼容的灵活配置
按照您自己的方式配置服务器。Caddy 的本机配置格式是 JSON,并且使用 Caddy 的配置适配器,您可以使用您喜欢的任何配置格式。所有配置都是通过 RESTful 管理 API 发布的,并且 Caddy 的 CLI 帮助您轻松处理配置文件。
$ caddy start --config caddy.json $ curl localhost:2019/id/my_handler \ -X PATCH \ -H "Content-Type: application/json" \ -d '{ "handler": "static_response", "body": "Work smarter, not harder." }' $ curl localhost:2019/config/ | jq
JSON 配置 API
Caddy 的本机配置格式是 JSON,为您提供了令人难以置信的强大功能和灵活性,可用于自动化的大规模部署。
通过一个直观、可编程的 REST API进行动态配置更改,该 API 提供 ACID 保证。它还安全地限定了范围,这意味着 URI 路径限制了更改,从而不可能意外更改配置的其他部分。
Caddyfile
虽然 JSON 提供了最终控制权,但大多数人更喜欢使用Caddyfile,因为它可以让您仅通过几行手写代码即可启动并运行一个生产就绪的网站。Caddyfile 通常仅为功能较弱的 nginx 配置的 15-25%。
caddyserver.com
root * src
file_server
templates # markdown & syntax highlighting!
encode zstd gzip
redir /docs/json /docs/json/
rewrite /docs/json/* /docs/json/index.html
rewrite /docs/* /docs/index.html
reverse_proxy /api/* localhost:9002
$ caddy run \ --config nginx.conf \ --adapter nginx
配置适配器
使用任何东西(甚至是 NGINX 配置文件!)为 Caddy 提供支持!
借助对配置改编的一流支持,您可以使用自己喜欢的格式(YAML、TOML、CUE、NGINX、HCL、Dhall、带注释的 JSON,甚至是 MySQL 数据库... 或其他任何东西)来配置 Web 服务器。Caddyfile 是内置的配置适配器。
无与伦比的可扩展性
Caddy 是世界上唯一采用其新颖模块化架构的服务器。从本质上讲,Caddy 是一种配置管理器,可以运行应用程序,如 HTTP 服务器、内部证书颁发机构、TLS 证书管理器、进程管理器等。
并且由于其独特的设计,我们可以在不增加代码库的情况下提供无限的功能。仅编译您需要的内容。
无限的权力
配置中几乎所有“执行操作”的部分都是可插拔的。Caddy 在如此精简的软件包中提供了无限的功能。
原生 CPU 性能
没有 RPC 调用或脆弱的依赖关系管理。插件编译到静态二进制文件中,从而确保部署成功并极大地加快运行速度。
易于开发
编写 Caddy 插件就像编写 Go 软件包一样简单。对于任何 Go 程序员来说,这都是一个舒适且熟悉的过程。
PHP 应用程序速度提高 4 倍
借助FrankenPHP,Caddy 可充当 PHP 应用程序服务器,提供比 Swoole 或 RoadRunner 快约4 倍的 PHP 页面:无需 php-fpm(FastCGI)。
将您的 PHP 应用程序部署为单个静态二进制文件,而无需分别安装 PHP 和 php-fpm。使用 FrankenPHP 的 Caddy 是您实现高性能 PHP 应用程序所需的全部!
基准测试使用工作程序模式与 Octane 比较总响应时间。FrankenPHP 与服务器一起在进程中运行,因此在大多数情况下它通常比 FPM/mod_php 更快。PHP 执行不会加速。
{
# Enable FrankenPHP
frankenphp
order php_server before file_server
}
example.com {
# Serve PHP app from current directory
php_server
}
为您的 PHP 应用程序提供服务就像此 Caddyfile 一样简单。PHP 解释器完全嵌入在 Caddy 二进制文件中,您的应用程序文件将从当前工作目录中提供服务。无需 php-fpm 或单独的 PHP 安装!
网络服务器的黄金标准
Caddy 拥有市场上最强大的 TLS 堆栈。Caddy 的内存安全保障比 OpenSSL(Apache 和 NGINX)更强,证书自动化逻辑比任何其他服务器或实用程序更先进,在其他服务器... 无法正常工作时,Caddy 可以让您的网站保持在线。
Caddy 是第一个完全自动执行公共证书管理的服务器,因此我们比任何人都更早地开始这样做。Caddy 管理着超过 5000 万张证书,已为其他服务器树立了黄金标准。
OCSP 装订挽救了局面
Caddy 会自动装订 OCSP 响应并缓存它们以应对中断。2018 年,许多热门网站对主流浏览器的用户宕机,因为关键的 OCSP 基础设施发生了长时间中断。只有 Caddy 默认装订并缓存 OCSP 响应,因此所有 Caddy 网站不受影响。
防撤销
2020 年,一次大规模证书撤销事件让许多系统管理员争先恐后地提前更新他们的证书。Caddy 会自动更新被撤销的证书,所有 Caddy 网站不受影响。(这是在 ARI 出现之前。)
在审计中表现出色
公司在重要审计前几个小时就在其网站前面部署了 Caddy,因为 Caddy 的安全默认值和“包含电池”的方法可能会挽救其合规状态。
相信大家的评价
我们有偏见。但 Caddy 因其易用性、安全默认值、强大的功能集和改变业务的成本降低而受到全球不同用户群体的广泛依赖和赞扬。