Media CDN te permite especificar encabezados de solicitud y respuesta personalizados.
Los encabezados personalizados te permiten hacer lo siguiente:
- Mostrar datos geográficos sobre el cliente, como país, región o ciudad, que puedes usar para mostrar contenido localizado.
- Determinar si una respuesta se entregó desde la caché (en su totalidad o en parte) y desde qué ubicación de caché se entregó.
- Quitar, reemplazar o agregar encabezados de solicitud y respuesta.
Configura encabezados personalizados
Los encabezados se configuran en cada ruta, lo que te permite agregar y quitar encabezados de distintos contenidos, como manifiestos o segmentos de video.
Configura los encabezados de solicitud personalizados por ruta al principio de la ruta de procesamiento de la CDN, antes de las decisiones de almacenamiento en caché. Por ejemplo, si configuras un encabezado cache-control como un encabezado personalizado por ruta, afectará el comportamiento de almacenamiento en caché en la CDN.
De forma predeterminada, los valores de encabezado agregados se separan por comas y se agregan a los encabezados de la solicitud o respuesta con los mismos nombres de campo.
Para reemplazar los valores existentes, configura replace como true.
gcloud y YAML
Para enumerar la configuración de 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 agregarán y quitarán:
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
En el siguiente fragmento de Terraform, se muestra una regla de ruta con encabezados personalizados.
En este ejemplo, se realizan las acciones siguientes:
- Se agrega un encabezado
client-geopersonalizado a la respuesta con la variable{client_region}, que muestra el país (o región) asociado a la dirección IP del cliente. - Se agrega un encabezado
x-downstream-cdnpersonalizado a la solicitud con una cadena estática. - Se quitan dos encabezados internos.
Para configurar encabezados personalizados específicos del origen, consulta Configura reescrituras de host o modificaciones de encabezado específicas del origen.
Variables de encabezado dinámico
Los encabezados personalizados pueden contener una o más variables dinámicas.
Los encabezados de solicitud que forman parte de la política de clave de caché (cacheKeyPolicy.includedHeaderNames) pueden contener una o más variables personalizadas. Los encabezados de solicitud que contienen otras variables dinámicas no pueden formar parte de la clave de caché.
| Variable | Descripción | Compatibilidad con encabezados de solicitud | Compatibilidad con encabezados de solicitud en una clave de caché | Compatibilidad con encabezados de respuesta |
|---|---|---|---|---|
cdn_cache_status |
Es una 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/respuesta, en la que el valor más a la derecha representa la caché más cercana al usuario. | ✔ | ||
client_city |
Es el nombre de la ciudad desde la que se originó 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, espacios y los siguientes caracteres de US-ASCII:
!#$%&'*+-.^_`|~. |
✔ | ✔ | |
client_city_lat_long |
Es la latitud y longitud de la ciudad en la que se originó la solicitud, por ejemplo, 37.386051,-122.083851
para una solicitud de Mountain View. |
✔ | ✔ | |
client_region |
Es el país (o región) asociado a la dirección IP del cliente. Este
es un código regional CLDR de Unicode, como US o FR.
Para la mayoría de los países, estos códigos corresponden directamente a
los códigos ISO-3166-1
alfa-2. |
✔ | ✔ | ✔ |
client_region_subdivision |
Es la subdivisión (por ejemplo, la provincia o el estado) del país
asociado a la dirección IP del cliente. Este 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 |
Es el tiempo estimado de transmisión de ida y vuelta entre la CDN y el cliente HTTP(S), en milisegundos. Este 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 |
Es el tipo de dispositivo que usa el cliente. Estos son los valores válidos: DESKTOP, MOBILE, TABLET, SMART_TV, GAME_CONSOLE, WEARABLE y UNDETERMINED. |
✔ | ✔ | |
host |
Es el host y el número de puerto del servidor al que se envió originalmente la solicitud del cliente, que corresponde al valor del
Host encabezado de la solicitud para HTTP/1.1 o el
:authority seudoencabezado para HTTP/2. |
✔ | ✔ | |
original_request_id |
Es el identificador único asignado a la solicitud que generó esta respuesta en un principio. Se propaga solo si es diferente de
request_id para las respuestas almacenadas en caché. |
✔ | ||
origin_name |
Es el recurso EdgeCacheOrigin desde el que se envió la respuesta
mediante proxy. |
✔ | ||
origin_request_header |
Refleja el valor del encabezado de origen en la solicitud de casos de uso de uso compartido de recursos entre dominios (CORS) . | ✔ | ||
proxy_status |
Es una lista de proxies HTTP intermediarios en la ruta de respuesta. El valor
se define en
RFC 9209.
Un recurso EdgeCacheService se representa con
Google-Edge-Cache. Si la respuesta se recuperó del origen,
un EdgeCacheOrigin
recurso se representa con Google-Edge-Cache-Origin. |
✔ | ||
tls_sni_hostname |
Es la indicación del nombre del servidor (como se define en RFC 6066), si el cliente la proporciona durante el protocolo de enlace de TLS o QUIC. El nombre de host se pasa a minúsculas y se quita cualquier punto final. | ✔ | ✔ | |
tls_version |
Es la versión de TLS negociada entre el cliente y el balanceador de cargas
durante el protocolo de enlace SSL. Los valores posibles incluyen TLSv1,
TLSv1.1, TLSv1.2 y
TLSv1.3. Si el cliente se conecta con QUIC en lugar de
TLS, el valor es QUIC. |
✔ | ✔ | |
tls_cipher_suite |
Es el conjunto de algoritmos de cifrado negociado durante el protocolo de enlace 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
para QUIC y las conexiones de cliente no encriptadas. |
✔ | ✔ | |
user_agent_family |
Es la familia de navegadores que usa 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:
Se conservan los encabezados de solicitud y respuesta existentes, excepto los siguientes, que se quitan:
X-User-IP- Cualquier encabezado con
X-GoogleoX-GFE
Las claves y los valores de encabezado deben cumplir con RFC 7230, con formularios obsoletos no permitidos.
Todas las claves de encabezado están en minúsculas (según HTTP/2).
Algunos encabezados se combinan. Cuando hay varias instancias de la misma clave de encabezado (por ejemplo,
Via), el balanceador de cargas combina sus valores en una lista separada por comas para una sola clave de encabezado. Solo se agrupan los encabezados cuyos valores se pueden representar como una lista separada por comas. Otros encabezados, comoSet-Cookie, nunca se combinan.Algunos encabezados se agregan o se les agregan valores. Media CDN siempre agrega o modifica ciertos encabezados, como
X-Forwarded-For.Media CDN expande cualquier encabezado de respuesta con una variable compatible, incluso si la establece el cliente o el origen. Esto te permite configurar encabezados dinámicos desde tu cliente (como un reproductor de video) o infraestructura de origen, además de configurar encabezados personalizados.
Por ejemplo, según las reglas descritas anteriormente, los encabezados
X-Goog-yX-Amz-se conservan y se pasan a minúsculas.
Valores de estado de la caché
La variable de encabezado {cdn_cache_status} puede mostrar varios valores correspondientes al nivel de caché que entregó la respuesta. Ten en cuenta los siguientes lineamientos para interpretar la variable de encabezado {cdn_cache_status}:
- Si el encabezado contiene
hit, el contenido solicitado se recuperó de la caché. - Si el encabezado contiene
miss, el contenido solicitado no se encontró en un nodo de caché y se tuvo que recuperar de un nodo superior. - Si el encabezado contiene
chunked, el contenido solicitado no se encontró en un nodo de caché y se tuvo que recuperar de un nodo superior, y la respuesta superior no incluyó un encabezadoContent-Length. - Si el encabezado contiene
fetch, el contenido solicitado se recuperó del origen. - Si el encabezado contiene
bypassed, la caché se omitió mediante la configuración de la solicitud. Si el encabezado contiene
uncacheable, algunos o todos los componentes de la infraestructura de almacenamiento en caché consideraron que el contenido solicitado no se puede almacenar en caché.- Si el encabezado también contiene
hitomiss, algunos componentes de almacenamiento en caché consideraron que el contenido solicitado no se puede almacenar en caché y otros sí. - Si el encabezado tampoco contiene
hitomiss, todos los componentes de almacenamiento en caché consideraron que el contenido solicitado no se puede almacenar en caché, y todas las solicitudes de este contenido se recuperan del origen. Para asegurarte de que tu contenido se almacene en caché de forma adecuada, revisa los requisitos de origen de Media CDN .
- Si el encabezado también contiene
Encabezados predeterminados
Media CDN agrega los siguientes encabezados de solicitud y respuesta a las solicitudes de origen y las respuestas del cliente, respectivamente.
| Encabezado | Descripción | Solicitud | Respuesta |
|---|---|---|---|
x-request-id |
Es un identificador único para la solicitud determinada. Este valor también se agrega
al registro de solicitud como jsonPayload.requestId, lo que
te permite correlacionar una solicitud o respuesta del cliente con una entrada de registro. |
✔ | |
age |
Muestra la antigüedad del objeto almacenado en caché (cantidad de segundos que ha estado en la caché). Por lo general, la antigüedad se calcula en función del momento en que el objeto se almacenó en caché en una ubicación de caché de cola larga (escudo). Las respuestas sin un encabezado |
✔ | |
server |
Se establece como Google-Edge-Cache. |
✔ | |
cdn-loop |
Identifica bucles, por ejemplo, en los que el host de origen es el mismo que el host (borde) para el usuario. Se agrega un token de |
✔ | |
forwarded |
Es la versión estructurada del encabezado Estos encabezados te 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 agregada en el valor del encabezado. |
✔ | |
x-forwarded-for |
Es la versión estándar no estructurada y de hecho del
Ambos encabezados se envían en una solicitud para admitir orígenes heredados que podrían
no conocer el |
✔ |
Las claves de encabezado están en minúsculas para los encabezados de solicitud y respuesta, ya que las claves de encabezado no distinguen mayúsculas de minúsculas.
Se pueden agregar otros encabezados, incluida la ubicación del punto de presencia (PoP) de borde y el estado de la caché (como hit y miss), con
variables de encabezado dinámico.