响应匹配器
响应匹配器 可以用于根据特定标准过滤(或分类)响应。
这些通常仅作为配置出现在某些其他指令中,以便在响应写入客户端时对其做出决策。
语法
@name {
status <code...>
header <field> [<value>]
}
匹配器
status
status <code...>
通过 HTTP 状态码。
- <code...> 是 HTTP 状态码的列表。特殊情况是像
2xx
和3xx
这样的字符串,它们分别匹配200
-299
和300
-399
范围内的所有状态码。
示例
@success status 2xx
header
header <field> [<value>]
通过响应 header 字段。
<field>
是要检查的 HTTP header 字段的名称。- 如果以
!
为前缀,则该字段必须不存在才能匹配(省略 value 参数)。
- 如果以
<value>
是字段必须具有的匹配值。- 如果以
*
为前缀,则执行快速后缀匹配(出现在末尾)。 - 如果以
*
为后缀,则执行快速前缀匹配(出现在开头)。 - 如果用
*
包围,则执行快速子字符串匹配(出现在任何位置)。 - 否则,它是快速精确匹配。
- 如果以
同一集合内的不同 header 字段之间是 AND 关系。每个字段的多个值之间是 OR 关系。
请注意,header 字段可能会重复并具有不同的值。后端应用程序必须考虑到 header 字段值是数组,而不是单个值,并且 Caddy 不会解释此类困境中的含义。
示例
匹配包含值 bar
的 Foo
header 的响应
@upgrade header Foo *bar*
匹配 Foo
header 值为 bar
或 baz
的响应
@foo {
header Foo bar
header Foo baz
}
匹配根本没有 Foo
header 字段的响应
@not_foo header !Foo