v2中文文档
项目

Caddyfile指令

以下指令是 Caddy 的标准配置,可在 HTTP Caddyfile 中使用:

指令 说明
abort 中止HTTP请求
acme_server 嵌入式ACME服务器
basicauth 强制执行HTTP基本身份验证
bind 自定义服务器的套接字地址
encode 编码(通常是压缩)响应
error 触发错误
file_server 从磁盘提供文件
forward_auth 将身份验证委托给外部服务
handle 一组互斥的指令
handle_errors 定义路由的错误处理器
handle_path 像处理器,但去掉路径前缀
header 设置或删除响应标头
import 包括片段或文件
log 启用访问/请求日志记录
map 将输入值映射到一个或多个输出
method 在内部更改HTTP方法
metrics 配置Prometheus指标展示端点
php_fastcgi 通过FastCGI服务PHP站点
push 使用HTTP/2服务器推送将内容推送到客户端
redir 向客户端发出HTTP重定向
request_body 操作请求包
request_header 操作请求头
respond 向客户端写入硬编码响应
reverse_proxy 强大且可扩展的反向代理
rewrite 在内部重写请求
root 设置站点根目录的路径
route 将一组指令从字面上视为单个单元
templates 对响应执行模板
tls 自定义TLS设置
tracing 集成OpenTelemetry的tracing
try_files 取决于文件的存在的重写
uri 操作URL
vars 设置任意变量

语法

每个指令的语法如下所示:

directive [<matcher>] <args...> {
	subdirective [<args...>]
}

<>表示要由实际值替换的标记。

[]表示可选参数。

...表示延续,即一个或多个参数,或者多行。

除非另有说明,否则子指令始终是可选的,即使它们没有出现在[].

匹配器

大多数——但不是全部——指令接受匹配器标记,它可以让你过滤请求。匹配器标记通常是可选的。如果你在指令的语法中看到这一点:

[<matcher>]

然后该指令接受一个匹配器令牌,让你过滤该指令适用于哪些请求。

由于匹配器标记的工作方式相同,因此不会在每一页上都描述匹配器令牌的各种可能性,以减少重复。如果想了解详情,请统一参考匹配器文档

指令顺序

许多指令操纵HTTP处理程序链。这些指令的默认顺序已经被硬编码到Caddy中,评估其顺序是很重要的事情:

map
root

header
request_body

redir

# URI manipulation
rewrite
uri
try_files

# middleware handlers; some wrap responses
basicauth
request_header
encode
push
templates

# special routing & dispatching directives
handle
handle_path
route

# handlers that typically respond to requests
abort
error
respond
metrics
reverse_proxy
php_fastcgi
file_server
acme_server

你可以使用order全局选项route指令覆盖/自定义该排序。