본문 바로가기
WIKI 기술 지식 베이스

응답 매처

원문 보기 위키 갱신

응답 매처 (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 <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

더 알아보기 (Learn more)