Media CDN le permite especificar encabezados de solicitud y respuesta personalizados.
Los encabezados personalizados te permiten hacer lo siguiente:
- Devuelve datos geográficos sobre el cliente, como el país, la región o la ciudad, que puede usar para mostrar contenido localizado.
- Determina si una respuesta se ha servido desde la caché (total o parcialmente) y desde qué ubicación de la caché se ha servido.
- Eliminar, sustituir o añadir encabezados de solicitud y de respuesta.
Definir encabezados personalizados
Los encabezados se definen en cada ruta, lo que te permite añadir y quitar encabezados de diferentes contenidos, como manifiestos o segmentos de vídeo.
Define encabezados de solicitud personalizados por ruta al principio de la ruta de procesamiento de la CDN, antes de tomar decisiones sobre el almacenamiento en caché. Por ejemplo, si define un encabezado cache-control
como encabezado personalizado por ruta, afectará al comportamiento de la caché en la CDN.
De forma predeterminada, los valores de encabezado añadidos se separan por comas y se añaden a los encabezados de respuesta o de solicitud con los mismos nombres de campo.
Para sobrescribir los valores actuales, asigna el valor true
a replace
.
gcloud y YAML
Para enumerar la configuración YAML del recurso EdgeCacheService
, usa el siguiente comando:
gcloud edge-cache services describe prod-media-service
En la sección .routing.pathMatchers[].routeRules[].headerAction
se muestran los encabezados que se van a añadir y quitar:
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
El siguiente fragmento de Terraform muestra una regla de ruta con encabezados personalizados.
Este ejemplo hace lo siguiente:
- Añade un encabezado
client-geo
personalizado a la respuesta mediante la variable{client_region}
, que devuelve el país (o la región) asociado a la dirección IP del cliente. - Añade un encabezado
x-downstream-cdn
personalizado a la solicitud mediante una cadena estática. - Elimina dos encabezados internos.
Para configurar encabezados personalizados específicos de un origen, consulta Configurar reescrituras de host o modificaciones de encabezados específicos de un origen.
Variables de encabezado dinámicas
Los encabezados personalizados pueden contener una o varias variables dinámicas.
Los encabezados de solicitud que forman parte de la política de claves de caché (cacheKeyPolicy.includedHeaderNames
) pueden contener una o varias variables personalizadas. Los encabezados de solicitud que contienen otras variables dinámicas no pueden formar parte de la clave de caché.
Variable | Descripción | Se admite en encabezados de solicitud | Se admite en los encabezados de solicitud de una clave de caché. | Se admite en encabezados de respuesta |
---|---|---|---|---|
cdn_cache_status |
Lista separada por comas de las ubicaciones (código IATA del aeropuerto más cercano) y los estados de cada nodo de caché en la ruta de solicitud o respuesta, donde el valor situado más a la derecha representa la caché más cercana al usuario. | ✔ | ||
client_city |
Nombre de la ciudad desde la que se ha originado la solicitud. Por ejemplo,
Mountain View para Mountain View (California). No hay una lista canónica de valores válidos para esta variable. Los nombres de las ciudades pueden
contener letras, números y espacios US-ASCII, así como los siguientes caracteres:
!#$%&'*+-.^_`|~ . |
✔ | ✔ | |
client_city_lat_long |
La latitud y la longitud de la ciudad desde la que se ha enviado la solicitud. Por ejemplo, 37.386051,-122.083851 para una solicitud de Mountain View. |
✔ | ✔ | |
client_region |
El país (o la región) asociado a la dirección IP del cliente. Se trata de un código de región Unicode CLDR, como US o FR .
En la mayoría de los países, estos códigos se corresponden directamente con los códigos ISO-3166-2. |
✔ | ✔ | ✔ |
client_region_subdivision |
La subdivisión (por ejemplo, la provincia o el estado) del país asociado a la dirección IP del cliente. Es un ID de subdivisión CLDR de Unicode, como USCA o CAON . Estos códigos Unicode se derivan de las subdivisiones definidas por el estándar ISO 3166-2. |
✔ | ✔ | ✔ |
client_rtt_msec |
Tiempo de transmisión de ida y vuelta estimado entre la CDN y el cliente HTTP(S), en milisegundos. Es el parámetro de tiempo de ida y vuelta suavizado (SRTT) medido por la pila TCP de la CDN, según RFC 2988. | ✔ | ✔ | |
device_request_type |
El tipo de dispositivo que usa el cliente. Estos son los valores válidos: DESKTOP , MOBILE , TABLET , SMART_TV , GAME_CONSOLE , WEARABLE y UNDETERMINED . |
✔ | ✔ | |
original_request_id |
Identificador único asignado a la solicitud que generó originalmente esta respuesta. Solo se rellena si es diferente de request_id en el caso de las respuestas almacenadas en caché. |
✔ | ||
origin_name |
El recurso EdgeCacheOrigin desde el que se ha proxyizado la respuesta. |
✔ | ||
origin_request_header |
Refleja el valor del encabezado Origin en la solicitud de los casos prácticos de uso compartido de recursos entre dominios (CORS). | ✔ | ||
proxy_status |
Lista de proxies HTTP intermediarios en la ruta de respuesta. El valor se define en RFC 9209.
Un recurso EdgeCacheService se representa mediante Google-Edge-Cache . Si la respuesta se ha obtenido del origen, un recurso EdgeCacheOrigin
se representa mediante Google-Edge-Cache-Origin . |
✔ | ||
tls_sni_hostname |
La indicación del nombre del servidor (tal como se define en el RFC 6066), si el cliente la proporciona durante el handshake TLS o QUIC. El nombre de host se convierte a minúsculas y se elimina cualquier punto final. | ✔ | ✔ | |
tls_version |
Versión de TLS negociada entre el cliente y el balanceador de carga durante el handshake de SSL. Entre los posibles valores se incluyen TLSv1 , TLSv1.1 , TLSv1.2 y TLSv1.3 . Si el cliente se conecta mediante QUIC en lugar de TLS, el valor es QUIC. |
✔ | ✔ | |
tls_cipher_suite |
El conjunto de cifrado negociado durante el handshake TLS. El valor se define
en el registro de conjuntos de algoritmos de cifrado TLS de IANA. Por ejemplo,
TLS_RSA_WITH_AES_128_GCM_SHA256 . Este valor está vacío en el caso de las conexiones de cliente QUIC y sin cifrar. |
✔ | ✔ | |
user_agent_family |
La familia del navegador que está usando el cliente. Estos son los valores válidos: APPLE , APPLEWEBKIT , BLACKBERRY , DOCOMO , GECKO , GOOGLE , KHTML , KOREAN , MICROSOFT , MSIE , NOKIA , NETFRONT , OBIGO , OPENWAVE , OPERA , OTHER , POLARIS , TELECA , SEMC , SMIT y USER_DEFINED . |
✔ | ✔ |
Las siguientes consideraciones se aplican a las variables personalizadas:
Los encabezados de solicitud y respuesta se conservan, excepto los siguientes, que se eliminan:
X-User-IP
- Cualquier encabezado con
X-Google
oX-GFE
Las claves y los valores de los encabezados deben cumplir el RFC 7230 y no pueden tener formatos obsoletos.
Todas las claves de encabezado están en minúsculas (según HTTP/2).
Algunas cabeceras se han combinado. Cuando hay varias instancias de la misma clave de encabezado (por ejemplo,
Via
), el balanceador de carga combina sus valores en una sola lista separada por comas para una sola clave de encabezado. Solo se combinan los encabezados cuyos valores se pueden representar como una lista separada por comas. Otros encabezados, comoSet-Cookie
, nunca se combinan.Se añaden algunos encabezados o se les añaden valores. Media CDN siempre añade o modifica determinados encabezados, como
X-Forwarded-For
.Media CDN amplía cualquier encabezado de respuesta con una variable admitida, aunque la haya definido el cliente o el origen. De esta forma, puedes definir encabezados dinámicos desde tu cliente (como un reproductor de vídeo) o infraestructura de origen, además de configurar encabezados personalizados. Media CDN no sustituye las variables en la ruta de la solicitud.
Por ejemplo, según las reglas descritas anteriormente, los encabezados
X-Goog-
yX-Amz-
se conservan y se convierten a minúsculas.
Valores de estado de la caché
La variable de encabezado {cdn_cache_status}
puede devolver varios valores correspondientes al nivel de caché que ha proporcionado la respuesta. Ten en cuenta las siguientes directrices para interpretar la variable de encabezado {cdn_cache_status}
:
- Si el encabezado contiene
hit
, el contenido solicitado se ha obtenido de la caché. - Si el encabezado contiene
miss
, significa que el contenido solicitado no se ha encontrado en un nodo de caché y se ha tenido que obtener de un nodo superior. - Si el encabezado contiene
fetch
, el contenido solicitado se ha obtenido del origen. Si el encabezado contiene
uncacheable
, significa que algunos o todos los componentes de la infraestructura de almacenamiento en caché consideran que el contenido solicitado no se puede almacenar en caché.- Si el encabezado también contiene
hit
omiss
, algunos componentes de la caché han considerado que el contenido solicitado no se puede almacenar en caché, mientras que otros sí. - Si el encabezado tampoco contiene
hit
nimiss
, el contenido solicitado se ha considerado no almacenable en caché por todos los componentes de almacenamiento en caché y todas las solicitudes de este contenido se obtienen del origen. Para asegurarse de que su contenido se almacena en caché correctamente, consulte los requisitos de origen de Media CDN.
- Si el encabezado también contiene
Encabezados predeterminados
Media CDN añade los siguientes encabezados de solicitud y respuesta a las solicitudes de origen y a las respuestas de cliente, respectivamente.
Header | Descripción | Solicitud | Respuesta |
---|---|---|---|
x-request-id |
Identificador único de la solicitud. Este valor también se añade al registro de solicitudes como jsonPayload.requestId , lo que te permite asociar una solicitud o respuesta de cliente con una entrada de registro. |
✔ | |
age |
Devuelve la antigüedad del objeto almacenado en caché (el número de segundos que lleva en la caché). La antigüedad se calcula normalmente en función de cuándo se almacenó en caché el objeto por primera vez en una ubicación de caché de larga duración (protección). Las respuestas sin un encabezado |
✔ | |
server |
Se ha definido como Google-Edge-Cache . |
✔ | |
cdn-loop |
Identifica bucles, por ejemplo, cuando el host de origen es el mismo que el host visible para el usuario (perimetral). Se añade un token de |
✔ | |
forwarded |
Versión estructurada del encabezado Estos encabezados le permiten identificar la dirección IP del cliente que se conecta cuando hay un proxy (o proxies) en la ruta. Por ejemplo, si un cliente con la dirección IP
En el caso de varios proxies del lado del cliente, el cliente que se conectó a Media CDN es la última dirección añadida en el valor del encabezado. |
✔ | |
x-forwarded-for |
Versión no estructurada y estándar de facto del encabezado Ambos encabezados se envían en una solicitud para admitir orígenes antiguos que quizás no conozcan el encabezado |
✔ |
Las claves de encabezado se escriben en minúsculas tanto en los encabezados de solicitud como en los de respuesta, ya que no distinguen entre mayúsculas y minúsculas.
Se pueden añadir otros encabezados, como la ubicación del punto de presencia (PoP) de la periferia y el estado de la caché (por ejemplo, hit
y miss
), mediante variables de encabezado dinámicas.