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