응답 매처
응답 매처 (Response Matchers)
출처: Caddy 공식 문서
본문
**응답 매처(response matcher)**는 특정 기준에 따라 응답을 필터링(또는 분류)하는 데 사용할 수 있어요.
이들은 보통 특정 다른 지시문 안의 설정으로만 나타나며, 응답이 클라이언트로 쓰여지는 동안 그 응답에 대한 결정을 내려요.
문법
지시문이 응답 매처를 받아들인다면, 문법 문서에서 [<response_matcher>] 또는 [<inline_response_matcher>] 형태로 표시돼요.
-
<response_matcher> 토큰은 이전에 선언된 명명된 응답 매처의 이름일 수 있어요. 예:
@name. -
<inline_response_matcher> 토큰은 사전 선언 없이 응답 기준 자체일 수 있어요. 예:
status 200.
명명된 매처
@name {
status <code...>
header <field> [<value>]
}
응답의 한 측면만 지시문과 관련이 있다면 이름과 기준을 같은 줄에 둘 수 있어요:
@name status <code...>
인라인
... {
status <code...>
header <field> [<value>]
}
... 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>는 매칭하려면 필드가 가져야 하는 값이에요. -
*로 접두사가 붙으면 빠른 접미사 매칭(끝에 나타남)을 수행해요. -
*로 접미사가 붙으면 빠른 접두사 매칭(처음에 나타남)을 수행해요. -
*로 감싸이면 빠른 부분 문자열 매칭(어디에나 나타남)을 수행해요. -
그 외에는 빠른 정확 일치(exact match)예요.
같은 집합 안의 서로 다른 헤더 필드는 AND로 결합돼요. 필드당 여러 값은 OR로 결합돼요.
헤더 필드는 반복될 수 있고 서로 다른 값을 가질 수 있다는 점을 유의하세요. 백엔드 애플리케이션은 헤더 필드 값이 하나의 값이 아니라 배열이라는 점을 반드시 고려해야 하며, Caddy는 이런 모호한 상황에서 의미를 해석하지 않아요.
예시:
bar 값을 담은 Foo 헤더가 있는 응답을 매칭해요:
@upgrade header Foo *bar*
bar 또는 baz 값 중 하나를 가진 Foo 헤더가 있는 응답을 매칭해요:
@foo {
header Foo bar
header Foo baz
}
Foo 헤더 필드가 전혀 없는 응답을 매칭해요:
@not_foo header !Foo