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

语法

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

  1. directive [<matcher>] <args...> {
  2. subdirective [<args...>]
  3. }

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

[]表示可选参数。

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

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

匹配器

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

  1. [<matcher>]

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

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

指令顺序

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

  1. map
  2. root
  3. header
  4. request_body
  5. redir
  6. # URI manipulation
  7. rewrite
  8. uri
  9. try_files
  10. # middleware handlers; some wrap responses
  11. basicauth
  12. request_header
  13. encode
  14. push
  15. templates
  16. # special routing & dispatching directives
  17. handle
  18. handle_path
  19. route
  20. # handlers that typically respond to requests
  21. abort
  22. error
  23. respond
  24. metrics
  25. reverse_proxy
  26. php_fastcgi
  27. file_server
  28. acme_server

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