回應匹配器
回應匹配器 可用於根據特定條件篩選(或分類)回應。
這些通常只會作為配置出現在其他特定指令中,以便在將回應寫出到用戶端時做出決策。
語法
@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>]
依回應標頭欄位。
<field>
是要檢查的 HTTP 標頭欄位的名稱。- 如果以
!
為前綴,則該欄位必須不存在才能匹配(省略值參數)。
- 如果以
<value>
是欄位必須具有的值才能匹配。- 如果以
*
為前綴,則執行快速後綴匹配(出現在結尾)。 - 如果以
*
為後綴,則執行快速前綴匹配(出現在開頭)。 - 如果用
*
括起來,則執行快速子字串匹配(出現在任何位置)。 - 否則,它是快速完全匹配。
- 如果以
同一組內的不同標頭欄位是 AND 關係。每個欄位的多個值是 OR 關係。
請注意,標頭欄位可能會重複且具有不同的值。後端應用程式必須考慮到標頭欄位值是陣列,而不是單一值,並且 Caddy 不會解釋此類困境中的含義。
範例
匹配包含值 bar
的 Foo
標頭的回應
@upgrade header Foo *bar*
匹配具有值 bar
或 baz
的 Foo
標頭的回應
@foo {
header Foo bar
header Foo baz
}
匹配完全沒有 Foo
標頭欄位的回應
@not_foo header !Foo