文档
一个 项目

约定

Caddy 生态系统遵循一些约定,以使整个平台上的事物保持一致和直观。

网络地址

在指定要拨号或绑定的网络地址时,Caddy 接受以下格式的字符串

network/address

网络部分是可选的(默认为 tcp),并且是 Go 的 net.Dial 函数 识别的任何内容。如果指定了网络,则单个正斜杠 / 必须将网络和地址部分隔开。

网络可以是以下任何一个;以 46 结尾的网络分别仅限于 IPv4 或 IPv6

  • TCP:tcptcp4tcp6
  • UDP:udpudp4udp6
  • IP:ipip4ip6
  • Unix:unixunixgramunixpacket

地址部分可以是以下任何形式

  • 主机
  • 主机:端口
  • :端口
  • /路径/到/unix/套接字
  • /路径/到/unix/套接字|0200

主机可以是任何主机名、可解析的域名或 IP 地址。

端口可以是单个值 (:8080) 或包含范围 (:8080-8085)。端口范围将乘以单个地址。并非所有配置字段都接受端口范围。特殊端口 :0 表示任何可用端口。

仅当使用 unix* 网络类型时,unix 套接字路径才可接受。将网络和地址分隔开的正斜杠不视为路径的一部分。

当 unix 套接字用作绑定地址时,您可以在路径后可选地指定文件权限模式,用管道 | 分隔。默认值为 0200(八进制),即 u=w,g=,o=(符号)。前导 0 是可选的。

有效示例

:8080
127.0.0.1:8080
localhost:8080
localhost:8080-8085
tcp/localhost:8080
tcp/localhost:8080-8085
udp/localhost:9005
unix//path/to/socket
unix//path/to/socket|0200

占位符

Caddy 的配置支持使用占位符(变量)。使用占位符是在静态配置中注入动态值的一种简单方法。

占位符用花括号 { } 括起来,并在其中包含变量名,例如:{foo.bar}。占位符括号可以转义,\{像这样\}。变量名通常用点分隔,以避免模块之间的冲突。

哪些占位符可用取决于上下文。并非所有占位符都在配置的所有部分都可用。例如,HTTP 应用程序设置占位符,这些占位符仅在与处理 HTTP 请求相关的配置区域可用。

以下占位符始终可用

占位符 描述
{env.*} 环境变量(示例:{env.HOME}
{system.hostname} 系统的本地主机名
{system.slash} 系统的文件路径分隔符
{system.os} 系统的操作系统
{system.arch} 系统的架构
{system.wd} 当前工作目录
{time.now} 当前时间,以 Go Time 结构表示
{time.now.http} 当前时间,以 HTTP 标头 中使用的格式表示
{time.now.unix} 当前时间,以秒为单位的 Unix 时间戳表示
{time.now.unix_ms} 当前时间,以毫秒为单位的 Unix 时间戳表示
{time.now.common_log} 当前时间,以通用日志格式表示
{time.now.year} 当前年份,以 YYYY 格式表示

并非所有配置字段都支持占位符,但大多数在您期望的地方都支持。

文件位置

本节包含有关在何处查找各种文件的信息。此处描述的文件和目录路径充其量只是默认值;有些可以被覆盖。

您的配置文件

没有一个单一的、传统的放置配置文件的地方。将它们放在对您最有意义的地方。

附带默认配置文件的发行版应该记录此配置文件的位置,即使它可能对包/发行版维护者来说很明显。对于大多数 Linux 安装,Caddyfile 将位于 /etc/caddy/Caddyfile

数据目录

Caddy 将 TLS 证书和其他重要资产存储在数据目录中,该目录由 配置的存储模块(默认值:本地文件系统)支持。

如果设置了 XDG_DATA_HOME 环境变量,则为 $XDG_DATA_HOME/caddy

否则,其路径因平台而异,遵循操作系统约定

操作系统 数据目录路径
Linux、BSD $HOME/.local/share/caddy
Windows %AppData%\Caddy
macOS $HOME/Library/Application Support/Caddy
Plan 9 $HOME/lib/caddy
Android $HOME/caddy(或 /sdcard/caddy

所有其他操作系统都使用 Linux/BSD 目录路径。

数据目录不能被视为缓存。其内容不是临时的,也不仅仅是为了性能。Caddy 将 TLS 证书、私钥、OCSP 钉扎和其他必要信息存储到数据目录中。在不了解其含义的情况下,不应清除它。

此目录必须持久且 Caddy 可写。

配置目录

这是 Caddy 可能会将某些配置存储到磁盘的地方。最值得注意的是,它将最后一个活动配置(默认情况下)持久保存到此文件夹中,以便稍后使用 caddy run --resume 轻松恢复。

如果设置了 XDG_CONFIG_HOME 环境变量,则为 $XDG_CONFIG_HOME/caddy

否则,其路径因平台而异,遵循操作系统约定

操作系统 配置目录路径
Linux、BSD $HOME/.config/caddy
Windows %AppData%\Caddy
macOS $HOME/Library/Application Support/Caddy
Plan 9 $HOME/lib/caddy

所有其他操作系统都使用 Linux/BSD 目录路径。

此目录必须持久且 Caddy 可写。

持续时间

持续时间字符串在 Caddy 的配置中很常见。它们采用与 Go 的 time.ParseDuration 语法 相同的格式,除了您还可以使用 d 表示天(为简单起见,我们假设 1 天 = 24 小时)。有效单位为

  • ns(纳秒)
  • us/µs(微秒)
  • ms(毫秒)
  • s(秒)
  • m(分钟)
  • h(小时)
  • d(天)

示例

  • 250ms
  • 5s
  • 1.5h
  • 2h45m
  • 90d

JSON 配置 中,持续时间值也可以是表示纳秒的整数。