This page is about Caddy 2, which is currently in beta. Click here for the old Caddy 1 site. Thank you for your patience as we transition!

The Ultimate Server

Caddy 2 is a powerful, enterprise-ready, open source web server with automatic HTTPS written in Go

Download 2.0 Beta
then learn how to get started

Download v1.0 stable
Caddy已获得Apache 2.0开源许可证的许可.

Fewer moving parts

球童简化了您的基础架构. 它负责TLS证书续订,OCSP装订,静态文件服务,反向代理,Kubernetes入口等等.

它的模块化体系结构意味着您可以使用针对任何平台进行编译的单个静态二进制文件执行更多操作.

Caddy在容器中运行很好,因为它没有依赖性,甚至没有libc. 几乎在任何地方都可以运行Caddy.

Documentation

Caddy does the work of your WAF, web server, ingress, reverse proxy, TLS terminator, logging, caching, and TLS certificate management.

Best-in-class security

Caddy是唯一自动且默认情况下使用HTTPS的Web服务器.

Caddy自动为您的站点获取并续订TLS证书. 它甚至还支持OCSP响应. 其新颖的证书管理功能是同类产品中最成熟,最可靠的.

用Go语言编写的Caddy比使用C语言编写的服务器提供更高的内存安全性.由Go标准库提供支持的强化TLS堆栈可处理所有Internet流量中的很大一部分.

Download

Caddy is the only server to use HTTPS automatically and by default

Backed by Ardan

Ardan Labs是Caddy Web Server开源项目的值得信赖的合作伙伴,为我们的客户提供企业级支持.

我们共同提供咨询,培训以及开发,安装和维护Caddy及其插件,以确保您的基础架构平稳高效地运行. 联系我们开始!

Let's talk

Ardan Labs

1-Liners

These commands are production-ready. When given a domain name, Caddy will use HTTPS by default, which provisions and renews certificates for you.*

*需要指向您计算机的域的公共A / AAAA DNS记录.
快速的本地文件服务器
$ caddy file-server
通过HTTPS的公共文件服务器
$ caddy file-server --domain example.com
HTTPS反向代理
$ caddy reverse-proxy --from example.com --to localhost:9000
使用工作目录中的Caddyfile运行服务器(如果存在)
$ caddy run

The Caddyfile

A config file that's human-readable and easy to write by hand. Perfect for most common and manual configurations.

带有模板评估的本地文件服务器
localhost templates file_server
具有自定义负载平衡和活动运行状况检查的HTTPS反向代理
example.com # Your site's domain name # Load balance between three backends with custom health checks reverse_proxy 10.0.0.1:9000 10.0.0.2:9000 10.0.0.3:9000 { lb_policy random_choose 2 health_path /ok health_interval 10s }
HTTPS网站具有干净的URL,反向代理,压缩和模板
example.com # Templates give static sites some dynamic features templates # Compress responses according to Accept-Encoding headers encode gzip zstd # Make HTML file extension optional try_files {path}.html {path} # Send requests to /api to backend reverse_proxy /api localhost:9005 # Serve everything else from the file system file_server

Config API

Caddy is dynamically configurable with a RESTful JSON API. Config updates are graceful, even on Windows.

Using JSON gives you absolute control over the edge of your compute platform, and is perfect for dynamic and automated deployments.

设置新配置
POST /config/ { "apps": { "http": { "servers": { "example": { "listen": ["127.0.0.1:2080"], "routes": [{ "@id": "demo", "handle": [{ "handler": "file_server", "browse": {} }] }] } } } } }
导出当前配置
GET /config/
仅更改配置的特定部分
PUT /id/demo/handle/0 {"handler": "templates"}
默认安全

默认情况下,Caddy是唯一使用HTTPS的Web服务器. 具有现代协议的强化TLS堆栈可保护隐私并暴露MITM攻击.

配置API

作为其主要的配置模式,Caddy的REST API使其易于自动化并与您的应用程序集成.

没有依赖

由于Caddy是用Go编写的,因此其二进制文件是完全独立的,可以在每个平台上运行,包括没有libc的容器.

模块化堆栈

收回对计算边缘的控制. 可以使用插件扩展Caddy的功能.

✔静态网站
✔动态网站
✔反向代理
✔动态配置
✔可扩展核心
✔自动魔术TLS
Features

General

Caddy 2经过大胆设计,可以简化您的基础架构,并让您可以控制计算平台的边缘.

Architecture

Extensible

Caddy可以将任何Go应用程序作为插件嵌入,并具有对插件插件的一流支持.

Minimal Global State

全局状态在服务器中很常见,但往往容易出错且成为瓶颈,因此Caddy 2使用了一种限制全局状态的新颖设计.

Lightweight

由于其所有功能,Caddy可以以相对较低的内存占用量和高吞吐量轻松高效地运行.

Multi-core

当情况变得艰难时,Caddy会使用更多的CPU. Go的调度程序了解Go代码,并且goroutines比系统线程更轻量.

Static Binary

Caddy是一个没有依赖关系的可执行文件,甚至没有libc. 从字面上看只需要一些金属和内核. 将Caddy放入您的PATH中并运行它. 做完了

Cross-Platform

Caddy可以在Windows,macOS,Linux,BSD,Android,Solaris,32位,amd64,ARM,aarch64,mips64等操作系统上运行,几乎所有Go可以编译的东西.

Configuration

JSON Structure

Caddy的本机配置格式是JSON,因此它与现有的系统和工具非常熟悉并且具有高度的互操作性.

REST API

通过REST端点将Caddy的配置作为单个JSON文档接收,从而使其高度可编程.

Config Files Optional

您可以在Caddy的CLI中使用配置文件,该文件可以在后台将它们转换为API请求.

Config Adapters

带上自己的配置! 配置适配器将各种配置格式(Caddyfile,TOML,NGINX等)转换为Caddy的本地JSON.

The Caddyfile

一种简单,直观的方式来配置您的站点. 这不是脚本,也不难记住. 从手指上滚下来. 您会非常喜欢它.

Unified Config

所有配置都包含在一个JSON文档中,因此影响配置的隐藏因素更少.

Partial Updates

当您只需要进行少量更改时,Caddy的API允许您仅更新其配置的相关部分.

Fine-Grained Control

Caddy的本机JSON公开了正在运行的服务器在内存中分配的实际字段,以提供更多控制权.

Export

您可以将带有GET请求的Caddy当前配置的实时副本导出到其API.

Efficient Reloads

对配置更新进行了微调,以提高效率,因此您每秒可以重新加载配置数十次.

Graceful Reloads

配置更改无需停机或关闭套接字即可生效-即使在Windows上也是如此.

Config Validation

您可以在应用之前使用Caddy的CLI预览和验证配置.

Basic Features

Static Files

默认情况下,Caddy将在当前工作目录中提供静态文件. 它是如此的简单和快速.

Dynamic Sites

Caddy还可以用于通过模板,代理,FastCGI以及使用插件为动态网站提供服务.

Command Line Interface

通过其简单的跨平台命令行界面自定义Caddy的运行方式; 特别适用于快速的一次性服务器实例.

Process Log

球童可以写出所有重要事件的日志,尤其是错误. 登录到文件,stdout / stderr或本地或远程系统日志!

Log Rolling

当日志文件变大时,Caddy将自动旋转它们以节省磁盘空间.

Security and Privacy

Caddy的旗舰功能是安全性和隐私性. Caddy是第一个也是唯一一个默认情况下自动启用HTTPS的Web服务器.

TLS

TLS 1.3

TLS 1.3是传输安全性的最新标准,它比以前的版本更快,更安全.

Modern Cipher Suites

Caddy默认使用最佳加密技术,包括AES-GCM,ChaCha和ECC,以平衡安全性和兼容性. 您可以自定义允许的密码.

Memory Safety

Caddy是同类产品中唯一唯一不受Heartbleed和缓冲区溢出等错误影响的Web服务器,因为它是用Go的内存安全语言编写的.

Client Authentication

使用TLS客户端身份验证,您可以将Caddy配置为仅允许某些客户端连接到您的服务.

Hardened Stack

Caddy用Go语言自豪地编写,其TLS堆栈由Go标准库中强大的crypto / tls软件包提供支持,该软件包受到世界最大的内容发行商的信任.

PCI Compliant

公司之所以选择Caddy,是因为其TLS配置默认情况下符合PCI. 它甚至为失去认证的公司节省了数小时!

Scalable Storage

TLS资产存储在磁盘上,但是可以将存储机制换成自定义实现,以便您可以部署和协调一系列Caddy实例.

Key Rotation

Caddy is cited as the only web server to rotate TLS session ticket keys by default. This helps preserve forward secrecy, i.e. visitor privacy.

Server Name Indication

Caddy使用TLS扩展服务器名称指示(SNI)能够在单个界面上托管多个站点. 像大多数功能一样,它可以正常工作.

Redirect HTTP to HTTPS

Caddy的自动HTTPS功能包括默认情况下将HTTP重定向到HTTPS.

Certificates

Auto Obtain

Caddy使用"让我们加密"自动为您获取证书. 可以使用任何与ACME兼容的CA. Caddy是第一个实施此技术的Web服务器.

Auto Renew

不再处理证书! 证书在即将到期之前会在后台自动更新.

Dynamic Cert Loading

Caddy是唯一可以在TLS握手期间获取证书并立即使用它的Web服务器.

Bring Your Own

如果您仍然希望自己管理证书,则可以像往常一样向Caddy提供证书和密钥文件(PEM格式).

Bulk Cert Loading

如果您自己管理许多证书,则可以给Caddy一个完整的文件夹,以从中加载证书.

Easy Self-Signed Certs

为了轻松进行本地开发和测试,Caddy可以轻松为您生成和管理自签名证书.

SAN Certificates

当您可能要管理自己的SAN证书并希望改用那些证书时,Caddy完全接受SAN证书.

Cluster Support

Caddy可以与其他实例共享存储在磁盘上的托管证书,并在机队部署中同步续订.

Scalable

Caddy的证书管理可以扩展到多达数万个站点,每个实例数万个证书.

Wildcards

当您需要服务许多相关的子域时,Caddy可以在需要时为您获取并更新通配符证书.

OCSP

Stapling

缺省情况下,Caddy会将OCSP响应装订到每个合格证书中. 与其他Web服务器相比,Caddy的OCSP装订对网络故障的抵抗力更强.

Caching

每个OCSP响应都缓存在磁盘上,以通过重新启动来保持完整性,以防响应器故障或网络链接受到攻击.

Must-Staple

可以将Caddy配置为获取Must-Staple证书,该证书要求该证书始终具有OCSP响应.

Background Updates

与其他Web服务器不同,Caddy在后台将OCSP响应与所有请求异步地更新,并且要在它们到期之前.

Pre-Validated

除非首先检查OCSP响应的有效性,以确保它被客户接受,否则OCSP响应不会被添加.

Revocation Handling

如果OCSP发现托管证书被吊销,则Caddy将自动尝试替换该证书.

ACME Protocol

HTTP Challenge

Caddy可以解决HTTP挑战以获得证书. 您还可以配置Caddy将这些挑战代理到其他进程.

TLS-ALPN Challenge

Caddy解决了TLS-ALPN挑战,该挑战发生在端口443上,根本不需要打开端口80.

Fleet Coordination

Caddy协调群集配置中证书的获取和更新,以应对HTTP和TLS-ALPN挑战!

DNS Challenge

Caddy解决了DNS挑战,该挑战不涉及打开计算机上的任何端口. 所有主要的DNS提供商都有集成!

Revocation

如果您的私钥之一遭到破坏,则可以使用Caddy轻松吊销受影响的证书.

Customizable CA

Caddy设计为可与任何ACME兼容的证书颁发机构一起使用,您可以使用单个命令行标志对其进行自定义.

Robust to Failures

Caddy是唯一不受CA更改和中断或OCSP响应器故障打扰的Web服务器,也是唯一的主要ACME客户端.

HTTP Server

Caddy的HTTP服务器具有广泛的现代功能,高性能,并且易于部署.

Site Features

Directory Browsing

使用Caddy的实用设计或根据您自己的自定义模板列出文件和文件夹.

Virtual Hosts

使用Caddyfile从同一IP地址服务多个站点.

Configurable Binding

您可以选择将侦听器绑定到的网络接口,从而使您可以更好地控制站点.

Templates

模板是Server-Side Includes的强大且经过改进的替代方案,可让您快速轻松地创建半动态站点.

Custom Error Pages

出现问题时显示用户友好的错误页面,或将错误详细信息写入开发环境的浏览器.

Logging

凯迪根据您喜欢的日志格式记录大量笔记. 将错误和请求记录到文件,stdout / stderr或本地或远程系统日志中.

Request Size Limits

您可以限制通过Caddy的请求主体的大小,以防止滥用网络带宽.

Timeouts

当您的服务器可能容易受到lowloris攻击或希望从慢速网络中释放资源时,启用超时可能是一个好主意.

Web Protocols

HTTP/1.1

Caddy仍普遍用于纯文本,开发和调试环境中,对HTTP / 1.1具有可靠的支持.

HTTP/2

现在是时候建立更快的网络了. Caddy开箱即用地使用HTTP / 2. 无需思考. 当客户端不支持HTTP / 2时,仍使用HTTP / 1.1.

HTTP/3

借助QUIC的IETF标准草稿版本,站点加载速度更快,并且在交换网络时不会断开连接.

WebSockets

Caddy支持将WebSocket直接连接到本地程序的stdin / stdout流,这些流的工作方式有点像CGI.

IPv6

Caddy支持IPv4和IPv6. 实际上,Caddy无需额外配置即可在IPv6环境中完全正常运行.

FastCGI

只需简单的一行配置,即可将您的PHP网站安全地置于Caddy后面. 您甚至可以指定多个后端.

HTTP Spec

Basic Authentication

使用HTTP基本身份验证保护您网站的区域. 在大多数情况下,通过HTTPS进行使用和保护都很简单.

Redirects

Caddy可以使用任何3xx状态代码发出HTTP重定向,如果愿意,还可以使用<meta>标签进行重定向.

Headers

自定义响应头,以便删除某些头或添加其他头.

Reverse Proxy

Basic Proxying

Caddy可以充当HTTP请求的反向代理. 您还可以使用一行配置透明地代理(保留原始Host标头).

Load Balancing

使用您选择的负载均衡策略代理多个后端:随机,最少连接,轮询,IP哈希或标头.

SSL Termination

Caddy由于其强大的TLS功能而经常被用作TLS终结器.

WebSocket Proxy

Caddy的代理中间件也能够代理与后端的Websocket连接.

Health Checks

Caddy将故障中的后端标记为不正常,并且您可以配置运行状况检查路径,间隔和超时以获得最佳性能.

Retries

When a request to a backend fails to connect, Caddy will try the request with other backends until one that is online accepts the connection.

Header Controls

默认情况下,将保留大多数标头,但是您可以控制哪些标头流向上游和下游.

Dynamic Backends

根据请求参数(例如部分域名或标头值)代理到任意后端.

Amenities

Clean URIs

优雅地提供文件,而无需URL中存在扩展名. 这些对访问者来说看起来更好,并且易于配置.

Rewrites

Caddy具有强大的请求URI重写功能,该功能支持正则表达式,条件和动态值.

Response Status Codes

发送某些请求的特定状态码.

Compression

使用gzip,Zstandard或brotli即时压缩内容.