概述
Caddy 本质上是一个配置管理系统,可以运行各种应用程序,如 HTTP 服务器、TLS 证书管理器、PKI 设施等。它可以通过称为配置模块的插件进行扩展。
Caddy 拥有灵活而强大的 HTTP 反向代理、在线配置 API 和稳健、生产就绪的静态文件服务器,并通过自动 TLS 证书默认通过 HTTPS 服务所有站点。
程序总体技术规格
编程语言
内存安全保证
运行时依赖项
编译时间
约 2 秒热构建
部署环境
- 命令行界面
- 系统服务
- 容器
- Kubernetes
- 嵌入式
供应链和发布
操作系统
- Linux
- Windows
- macOS
- FreeBSD
- OpenBSD
- NetBSD
- Android
微架构
- x86 (i386, i686)
- x86-64 (AMD64)
- ARM
- ARM 64 (AArch64)
- MIPS
- MIPS64[LE]
- PPC64[LE]
- RISCV64
- S390X
- Apple Silicon (Apple ARM; M1, M2 等)
正则表达式引擎
并发模型
插件模型
高级功能
配置更改
- RESTful HTTP API
- 配置文件
- 安全远程访问
应用模块
- HTTP
- TLS
- PKI
- 事件
- 原始 TCP 和 UDP
- SSH
- PHP
- 动态 DNS
- 安全
- 进程监管
- 性能分析
日志
- 分级
- 结构化
- 高效、零分配
- 可扩展
- 删除、过滤、编辑和审查字段
- IP 掩码
- 哈希值
- 正则表达式替换
存储
- 文件系统
- 嵌入式(内存中)
- Postgres
- Redis
- Vault
- Consul
命令行界面
Caddy 的 CLI 不仅有用,而且还非常实用。虽然大多数服务器 CLI 仅仅运行进程和重新加载配置,但 Caddy 的 CLI 更进一步,帮助您轻松管理现代 Web 服务器。
插件可以注册自己的子命令来扩展 Caddy 的 CLI。
命令帮助
caddy help
或 -h
访问整体命令帮助或子命令帮助。man
手册页)管理 API 包装器
- 将配置适配为 JSON
- 启动服务器,可以选择使用配置
- 平滑重载配置
- 停止服务器
二进制实用程序
- 详细的构建元数据
- 列出已安装的配置模块
- 列出依赖项
- 添加和删除插件包
- 打印版本
- 升级 Caddy 二进制文件
配置实用程序
- 格式化 Caddyfile
- 验证配置
- 列出依赖项
- 添加和删除插件包
- 打印版本
模块实用程序
- 静态文件服务器
- HTTP 反向代理
- 静态 HTTP 响应(可模板化)
- 存储导入/导出(备份/恢复)
- 哈希密码以用于 HTTP 基本身份验证
- 导出文件浏览模板
集成实用程序
- 生成 shell 补全脚本
- 打印环境变量
- 生成
man
手册页 - 将 Caddy 管理的根 CA 安装到信任存储中
- 从信任存储中删除 Caddy 管理的根 CA
退出代码
配置
我们设计 Caddy 的目标是使其配置不仅提供对功能的访问,而且它本身就是一项功能。
不再争论哪种配置文件格式最好:使用您想要的任何格式!Caddy 的配置适配器允许您使用您喜欢的任何配置格式。
原生配置格式
配置适配器
- Caddyfile
- JSON 5
- JSON-C
- NGINX Conf
- YAML
- CUE
- TOML
- HCL
- Dhall
- MySQL
人性化的配置
导出
配置 API
配置文件
自动 HTTPS
我们的旗舰功能,由 CertMagic 提供支持。Caddy 是第一个也是唯一一个默认启用 HTTPS 的主要服务器,并自动为您的所有站点获取和续订证书。
完全原生、集成的自动 HTTPS 远优于任何需要外部工具或 cron 作业的解决方案。Caddy 的证书维护是业内最好的,因为它比任何其他解决方案都更强大、更可靠和更具可扩展性。Caddy 简化了您的基础设施,而不是使其复杂化。
当然,您可以尝试使用 Certbot 和 cron 作业部署 100,000 个站点,但是如果这本身没有崩溃,Web 服务器也会崩溃。只有 Caddy 被设计为可以水平和垂直大规模扩展 TLS 证书。
永远不要再手动生成 CSR。永远不要点击电子邮件中的链接来下载证书。永远不要(错误地)配置您的 Web 服务器来使用它们。永远不会错过续订证书的提醒,每个证书每隔几个月到期前都需要逐个续订。您甚至不必考虑证书或 TLS。
这真是太神奇了。
合规性
- 符合 PCI DSS 标准
- 符合 NIST 标准
- 符合 HIPAA 标准
- 行业最佳实践
按需 TLS
证书颁发者
- ACME
- 内部(自签名)
- Microsoft Active Directory 证书服务
证书管理器
- HTTP
- Tailscale
集群协调
- 获取和续订证书
- 加载现有证书
- OCSP 订书钉
- 会话票证密钥 (STEK)
将 HTTP 重定向到 HTTPS
OCSP
Must-Staple
吊销处理
密钥类型
- Ed25519
- ECDSA P256
- ECDSA P384
- RSA 2048
- RSA 4096
证书有效期
大多数 ACME 客户端都假定证书有效期为 90 天,或者不希望证书短于 7 天。Caddy 可以成功管理有效期为数小时和数分钟的证书。
Caddy 不是硬编码某个年龄后再续订,而是计算相对于每个证书生命周期的年龄,称为续订窗口比率。默认情况下,Caddy 会在证书可用寿命的 2/3 后续订证书。此比率适用于大多数有效期,但可以调整。
智能错误处理
内置节流
ACME
Caddy 的 ACME 客户端是同类最佳的,具有比当今任何其他集成 ACME 客户端更高的可靠性和更多的生产经验。Caddy 自 Let's Encrypt 公开可用之前就开始使用 ACME,并且 Caddy 可以与任何兼容 ACME 的 CA 一起使用。
兼容性
- Let's Encrypt
- ZeroSSL
- Google Trust Services
- BuyPass
- DigiCert
- GlobalSign
- SSL.com
- Smallstep
测试端点
外部帐户绑定
挑战类型
- HTTP-01
- TLS-ALPN-01
- DNS-01
备用挑战端口
- HTTP(默认 80)
- TLS-ALPN(默认 443)
智能挑战选择
DNS 挑战集成
- ACME-DNS
- AliDNS
- Cloudflare
- DigitalOcean
- DNSPod
- DuckDNS
- DynDNS
- EasyDNS
- Gandi
- GoDaddy
- Google Cloud DNS
- Hetzner
- Linode
- Name.com
- Namecheap
- Namesilo
- Netlify
- OVH
- Porkbun
- PowerDNS
- RFC 2136
- Route 53
- Scaleway
- Vercel
- Vultr
- 查看全部...
受信任的 CA 证书
首选链
- 最小
- 根证书的 CommonName
- 任何证书的 CommonName
续订计划
- 内部
- ARI
HTTP 服务器
Caddy 的 HTTP 服务器是独一无二的:功能强大、可扩展、高效且现代。
HTTP 版本
- HTTP/1.1
- HTTP/2
- 基于明文的 HTTP/2 (H2C)
- HTTP/3
HTTPS
监听接口
- TCP
- UDP
- Unix 套接字
监听器包装器
- 在 HTTPS 端口上重定向 HTTP
- PROXY 协议
- Tailscale
超时
- 读取超时
- 读取 HTTP 标头超时
- 写入超时
- 空闲超时
- TCP 保活间隔
全双工通信
- 可为 HTTP/1 配置
- HTTP/2 的默认设置
错误处理
TLS 终止
- TLS 1.2
- TLS 1.3
- 客户端身份验证(TLS 相互身份验证;mTLS)
- 客户端身份验证模式:请求、需要、如果给定则验证、需要并验证
- 密码套件
- 曲线
- ALPN
- 限制协议版本
- 默认 SNI
- 回退 SNI
跨站点安全
访问日志
- 比通用日志格式 (CLF) 更有用
- 请求标头(敏感字段除外)
- 响应标头
- 远程 IP
- 延迟
可观测性
请求处理
请求过滤器
- 主机
- 路径
- 方法
- 标头
- 协议
- 远程 IP
- 任意 CEL 表达式
- 文件(存在、大小、修改日期)
- HTTP 路由变量
- 逻辑非
- 地理位置
- 远程主机
HTTP 处理程序
处理程序是可以组合在一起以精确地按照您想要的方式处理传入请求的模块。与 Caddy 的其余部分一样,处理程序模块是可扩展和可插拔的。我们实际上无法在此处列出所有处理程序。
在实践中,处理程序与匹配器配对,匹配器根据各种属性(如其路径、标头、查询字符串、方法等)过滤或分类请求。这允许您有选择地将所有这些处理程序应用于某些请求。
ACME 服务器
Authelia
身份验证
- HTTP 基本身份验证
- JWT
- Discord
- 表单
- SAML
高级身份验证
- 基于表单
- 本地
- 基本
- LDAP
- OpenID Connect
- OAuth 2
- SAML
缓存
- Badger
- Etcd
- NutsDB
- Olric
- Redis
编码
- Gzip
- Zstandard (zstd)
- Brotli
文件服务器
Go 包虚路径
gRPC-Web 桥接
标头操作
- 添加
- 设置(覆盖)
- 删除
- 子字符串替换
图像过滤
- 裁剪
- 适应
- 翻转
- 调整大小
- 旋转
- 锐化
映射
Mercure
指标
HTTP/2 服务器推送
速率限制
- 本地或分布式
- 多个区域
- 缓冲区池化
- 仅 1 个 goroutine
- 可配置的 O(Kn) 内存管理
- 状态通过重载持久化
- 设置 Retry-After 标头
- 可选抖动
- 高度可编程
请求体控制
反向代理
重写请求
- 方法
- URI(路径、查询字符串)
- 剥离路径前缀或后缀
- 正则表达式支持
- 智能 URL 编码和正斜杠处理
静态响应
子路由
模板
追踪
变量
WebDAV
反向代理
Caddy 拥有世界上最灵活的通用反向代理,具有高级请求和响应处理、动态路由、健康检查、负载均衡、熔断等功能。
Caddy 代理的独特之处在于其设计。代理的仅面向客户端的一侧需要是 HTTP;与后端往返的底层传输可以使用任何协议来实现!
此外,我们的代理可以使用高度动态的上游进行编程。也就是说,可用的上游可以在飞行中的请求期间更改!如果没有可用的后端,Caddy 可以保持请求,直到有一个后端可用。
高级代理功能
传输
- HTTP
- FastCGI
- NTLM
负载均衡
- 随机
- 随机选择 N 个
- 最少连接
- 轮询
- 加权轮询
- 首个可用
- 远程 IP 哈希
- 客户端 IP 哈希
- URI 哈希
- 查询哈希
- 标头哈希
- Cookie 哈希
熔断
健康检查
- 主动
- 被动
可观测性
上游源
- 静态
- 动态:A 记录
- 动态:SRV 记录
- 动态:多种来源组合
重试
流式传输
受信任的代理
标头操作
- 添加
- 设置(覆盖)
- 删除
- 子字符串替换
缓冲
- 请求
- 响应
请求重写
响应拦截
主动健康检查
主动健康检查假定后端默认处于关闭状态,直到通过健康检查确认情况并非如此。
HTTP 请求参数
- 路径 & 查询字符串
- 端口
- 标头
定时
成功标准
- 响应超时
- HTTP 状态代码
- 正文上的正则表达式匹配
故障安全
被动健康检查
被动健康检查假定后端默认处于启动状态,直到在代理请求的过程中满足故障标准。
故障标准
- 超出并发请求限制
- HTTP 状态
- 延迟
故障记忆
HTTP 传输
这是默认的传输模块。它制作一个代理的 HTTP 请求,以从后端获取 HTTP 响应。
DNS 解析器
TLS
- 自定义根 CA 池
- 后端客户端身份验证
- 自定义握手超时
- 服务器名称指示 (SNI)
- 重新协商级别
- 从 TLS 中排除某些端口
连接池
- HTTP Keep-Alive
- 自定义探测间隔
- 最大空闲连接数(总数和每主机)
- 空闲连接超时
压缩
连接限制
PROXY 协议
超时
- 连接(拨号)
- RFC 6555 回退
- 读取响应标头
- Expect-continue
- 读取
- 写入
自定义缓冲区大小
- 读取缓冲区
- 写入缓冲区
HTTP 版本
- HTTP/1.1
- HTTP/2
- H2C (HTTP/2 over cleartext)
FastCGI 传输
FastCGI 通常用于通过 php-fpm 提供 PHP 应用程序。FastCGI 响应器可能需要关于正在运行的脚本的附加信息,例如脚本名称、相对于根目录的路径等,而 Caddy 的 FastCGI 传输处理所有这些,并使其可配置。
高效
路径分割
解析根符号链接
环境变量
超时
- 拨号(连接)
- 读取
- 写入
捕获 stderr
静态文件服务器
Caddy 的文件服务器是为您的网站提供静态文件的首要方式。
它很简单:指定一个根目录,从中提供文件,然后每个请求路径都会自动附加到根目录,以获取要提供的文件的完整路径。
内核加速
虚拟文件系统
- 本地磁盘
- 嵌入式资产
- Amazon AWS S3
预压缩文件
- Brotli
- Zstandard
- Gzip
隐藏文件和文件夹
索引文件名
条件请求
- Etag
- Last-Modified
- If-Match
- If-None-Match
- If-Modified-Since
- If-Unmodified-Since
- If-Range
范围请求
规范路径
直通模式
文件浏览器
Caddy 的文件服务器通过其现代文件浏览器而活跃起来,该浏览器在移动设备和桌面上都看起来很有吸引力。它比任何其他标准 HTTP 文件服务器都具有更多的功能和实用性!

文件夹列表
日间和夜间主题

- 浅色模式
- 深色模式
按列排序
- 文件/目录
- 名称
- 大小
- 修改日期
筛选器

布局

- 列表
- 网格
响应式设计
JSON API
Accept-Encoding: application/json
标头的请求将以 JSON 有效负载回复,以便以编程方式或脚本方式访问您的文件列表。可自定义的列表模板
文件大小可视化

文件类型图标




Caddy 是一个活跃的项目,具有大量功能。此页面尚未全面列出 Caddy 提供的所有功能和优势,因为要提及的功能太多了。我们欢迎在 GitHub 上做出贡献!