Media CDN을 사용하면 커스텀 요청 및 응답 헤더를 지정할 수 있습니다.
커스텀 헤더를 사용하면 다음을 수행할 수 있습니다.
- 국가, 리전, 도시와 같이 지역화된 콘텐츠를 표시하는 데 사용할 수 있는 클라이언트에 대한 지리적 데이터를 반환합니다.
- 캐시에서 응답이 제공되었는지 여부(전체 또는 일부) 그리고 제공된 캐시 위치를 확인합니다.
- 요청 및 응답 헤더 모두를 삭제, 대체, 추가합니다.
커스텀 헤더 설정
헤더가 각 경로에 설정되어 매니페스트 또는 동영상 세그먼트와 같은 여러 콘텐츠에 대해 헤더를 추가 및 삭제할 수 있습니다.
캐싱 결정 전에 CDN 처리 경로 초기에 경로별 커스텀 요청 헤더를 설정합니다. 예를 들어 cache-control 헤더를 경로별 커스텀 헤더로 설정하면 CDN의 캐싱 동작에 영향을 미칩니다.
기본적으로 추가한 헤더 값은 쉼표로 구분되고 동일한 필드 이름의 응답 또는 요청 헤더에 추가됩니다.
기존 값을 덮어쓰려면 replace를 true로 설정합니다.
gcloud 및 YAML
EdgeCacheService 리소스의 YAML 구성을 나열하려면 다음 명령어를 사용합니다.
gcloud edge-cache services describe prod-media-service
.routing.pathMatchers[].routeRules[].headerAction 섹션에는 추가 및 삭제할 헤더가 표시됩니다.
routeRules:
- priority: 1
description: "video routes"
matchRules:
- prefixMatch: "/video/"
headerAction:
responseHeadersToAdd:
# Return the country (or region) associated with the client's IP address.
- headerName: "client-geo"
headerValue: "{client_region}"
replace: true
requestHeadersToAdd:
# Inform the upstream origin server the request is from Media CDN
- headerName: "x-downstream-cdn"
headerValue: "Media CDN"
responseHeadersToRemove:
- headerName: "X-User-ID"
- headerName: "X-Other-Internal-Header"
Terraform
다음 Terraform 스니펫은 커스텀 헤더가 있는 경로 규칙을 보여줍니다.
이 예시에서는 다음을 수행합니다.
- 클라이언트의 IP 주소와 연결된 국가(또는 리전)를 반환하는
{client_region}변수를 사용하여 응답에 커스텀client-geo헤더를 추가합니다. - 정적 문자열을 사용해서 요청에 커스텀
x-downstream-cdn헤더를 추가합니다. - 2개의 내부 헤더를 삭제합니다.
원본별 커스텀 헤더를 구성하려면 원본별 호스트 재작성 또는 헤더 수정을 참고하세요.
동적 헤더 변수
커스텀 헤더는 하나 이상의 동적 변수를 포함할 수 있습니다.
캐시 키 정책(cacheKeyPolicy.includedHeaderNames)의 일부인 요청 헤더는 하나 이상의 커스텀 변수를 포함할 수 있습니다. 다른 동적 변수를 포함하는 요청 헤더는 캐시 키의 일부일 수 없습니다.
| 변수 | 설명 | 요청 헤더에 지원됨 | 캐시 키의 요청 헤더에 지원됨 | 응답 헤더에 지원됨 |
|---|---|---|---|---|
cdn_cache_status |
요청/응답 경로에서 각 캐시 노드의 위치(가장 가까운 공항의 IATA 코드) 및 상태가 쉼표로 구분된 목록입니다. 여기에서 가장 오른쪽 값은 사용자에게 가장 가까운 캐시를 나타냅니다. | ✔ | ||
client_city |
요청이 시작된 도시의 이름입니다(예: 캘리포니아주 마운틴뷰의 경우 Mountain View). 이 변수에 유효한 값의 표준 목록은 없습니다. 도시 이름에는 US-ASCII 문자, 숫자, 공백, !#$%&'*+-.^_`|~ 문자가 포함될 수 있습니다. |
✔ | ✔ | |
client_city_lat_long |
요청이 시작된 도시의 위도와 경도입니다(예: 마운틴뷰에서 요청한 경우 37.386051,-122.083851). |
✔ | ✔ | |
client_region |
클라이언트의 IP 주소와 연관된 국가(또는 리전)입니다. 유니코드 CLDR 리전 코드입니다(예: US 또는 FR).
대부분의 국가에서 이 코드는
ISO-3166-1
alpha-2 코드와 바로 대응합니다. |
✔ | ✔ | ✔ |
client_region_subdivision |
클라이언트의 IP 주소와 관련된 국가의 구획입니다(예: 주 또는 시/도)
유니코드 CLDR 하위 영역 ID입니다(예: USCA 또는 CAON). 이러한 유니코드 코드는 ISO-3166-2 표준에 정의된 구획에서 파생된 것입니다. |
✔ | ✔ | ✔ |
client_rtt_msec |
CDN과 HTTP(S) 클라이언트 사이의 예상 왕복 전송 시간(밀리초)입니다. 이는 RFC 2988에 따라 CDN의 TCP 스택으로 측정된 평활 왕복 시간(Smoothed Round Trip Time, SRTT) 매개변수입니다. | ✔ | ✔ | |
device_request_type |
클라이언트가 사용 중인 기기 유형입니다. 유효한 값은 DESKTOP, MOBILE, TABLET, SMART_TV, GAME_CONSOLE, WEARABLE, UNDETERMINED입니다. |
✔ | ✔ | |
edge_location_country_code |
클라이언트의 요청을 제공하는 특정 Media CDN 에지 캐시 서버의 지리적 국가/리전을 식별합니다. ISO 3166-1
alpha-2 국가 코드입니다(예: US 또는 JP).
이 두 글자 코드는 ISO 3166-1 표준에 정의된 공식 국가 코드에서 파생된 것입니다. |
✔ | ✔ | |
host |
클라이언트 요청이 원래 전송된 서버의 호스트 및 포트 번호로, HTTP/1.1의 Host 요청 헤더 또는 HTTP/2의 :authority 가상 헤더 값에 해당합니다. |
✔ | ✔ | |
original_request_id |
원래 이 응답을 생성한 요청에 할당된 고유 식별자입니다. 캐시된 응답의 경우 request_id와 다른 경우에만 채워집니다. |
✔ | ||
origin_name |
응답이 프록시된 EdgeCacheOrigin 리소스입니다. |
✔ | ||