Media CDN proporciona funciones avanzadas de enrutamiento HTTP que le permiten asignar el tráfico a configuraciones perimetrales y orígenes específicos de manera pormenorizada.
Configurar una regla de ruta
Configura una regla de ruta para un servicio de Media CDN.
Consola
En la Google Cloud consola, ve a la página Media CDN.
Para abrir la página Detalles del servicio en el que quiere configurar una regla de ruta, haga clic en el nombre del servicio.
Para cambiar al modo de edición, haz clic en el botón Editar.
Para ir a la sección Enrutamiento, haz clic en Siguiente.
Especifique al menos una regla de host. Haga clic en Añadir regla de host. A continuación, haz lo siguiente:
En Hosts, especifica al menos un host para la coincidencia.
En Descripción, escribe una breve descripción de la regla de host.
También puedes hacer clic en la flecha para desplegar una regla de host y editarla.
Especifique al menos una regla de ruta. Haz clic en Añadir regla de ruta.
También puedes editar una regla de ruta haciendo clic en Editar en la fila correspondiente.
En el panel Editar regla de ruta, en Prioridad, asigna un valor a la prioridad de la ruta.
En Descripción, escribe una breve descripción que te ayude a identificar la regla en una lista de reglas.
En la sección Coincidencia, especifique al menos una condición de coincidencia. Haz clic en Añadir una condición de coincidencia. A continuación, haz lo siguiente:
- En Tipo de concordancia, selecciona cualquier opción de concordancia de ruta.
En Coincidencia de ruta, especifique los nombres, las rutas o las plantillas. Considera la posibilidad de usar la coincidencia con patrones comodín.
Si es necesario, selecciona también Habilitar distinción entre mayúsculas y minúsculas para el valor de la ruta.
Opcional: Seleccione Los encabezados coinciden y Los parámetros de consulta coinciden. A continuación, haz clic en los botones correspondientes para añadir encabezados y parámetros de consulta. En cada uno, especifique el nombre, el tipo de concordancia y el valor.
Para obtener más información, consulta Coincidencia con encabezados y parámetros de consulta.
Para guardar la condición de coincidencia, haz clic en Hecho.
En Acción principal, selecciona una de las siguientes opciones:
Obtener de un origen: para dirigir las solicitudes a un origen específico, selecciona esta opción y, a continuación, elige un origen.
Redirección de URL: para redirigir solicitudes, seleccione esta opción. A continuación, especifica el tipo de redirección, la ruta y el código de estado.
De forma opcional, selecciona las opciones para redirigir todas las respuestas a HTTPS o para quitar la consulta.
Haz clic en Configuraciones avanzadas.
En la sección Acción del encabezado, haz clic en Añadir un elemento.
Seleccione un tipo de acción y, a continuación, especifique un encabezado como par de nombre y valor. A continuación, haga clic en Hecho.
En la sección Acción de ruta, haz clic en Añadir un elemento.
Especifica un tipo de acción y sus opciones relacionadas. A continuación, haga clic en Hecho.
En Filtrado por método HTTP, selecciona Personalizar filtrado por método HTTP.
A continuación, selecciona los métodos HTTP que quieras que se envíen a tu origen a través del proxy.
Para guardar la regla de ruta, haz clic en Guardar.
Para guardar los cambios en el servicio, haz clic en Actualizar servicio.
gcloud y YAML
Exporta tu configuración de Media CDN a un archivo YAML. Usa el comando
gcloud edge-cache services export.gcloud edge-cache services export SERVICE_NAME \ --destination=FILENAME.yamlHaz los cambios siguientes:
SERVICE_NAME: el nombre de tu servicioFILENAME: el nombre del archivo YAML
Actualiza el archivo YAML con la configuración necesaria, tal como se describe en las secciones de esta página.
Para actualizar el servicio, importa tu configuración de Media CDN desde el archivo YAML. Usa el comando
gcloud edge-cache services import.gcloud edge-cache services import SERVICE_NAME \ --source=FILENAME.yaml
Solicitudes de coincidencia
Una configuración de Media CDN contiene un conjunto de rutas definidas en la sección Enrutamiento de un recurso EdgeCacheService.
Estas rutas coinciden con las solicitudes en función de (al menos) un host. Para obtener más información sobre cómo se dirige el tráfico a un origen, consulta HostRule y PathMatcher.
Cada ruta puede definir su propia configuración de CDN, reescrituras, redirecciones, políticas de CORS, encabezados HTTP personalizados y asignación de origen.
Las rutas pueden compartir orígenes.
Por ejemplo, puedes enrutar las solicitudes de manifiestos a un origen específico y definir un TTL de caché de corta duración y una política de almacenamiento en caché negativo. Las solicitudes de segmentos se pueden dividir en otro origen mediante encabezados y parámetros de consulta para separar tipos de manifiesto o usuarios específicos.
En el siguiente ejemplo se muestra cómo enrutar las solicitudes que coinciden con un encabezado, un parámetro de consulta y un prefijo de ruta específicos para el host media.example.com:
name: prod-service routing: hostRules: - hosts: - media.example.com pathMatcher: example_routes pathMatchers: - name: example_routes routeRules: - priority: 10 origin: staging-live-origin matchRules: - prefixMatch: /vod/ headerMatches: - headerName: "x-staging-client" presentMatch: true queryParameterMatches: - name: "live" exactMatch: "yes" routeAction: cdnPolicy: defaultTtl: 5s
Coincidencia de ruta
Media CDN admite la coincidencia de rutas completa (exacta), de prefijo y con comodines. La coincidencia de rutas se puede combinar con la coincidencia basada en host, encabezado y parámetros de consulta para crear reglas de enrutamiento de solicitudes detalladas.
A continuación, se indican tres formas de buscar coincidencias en una ruta de URL.
| Campo | Descripción | Ejemplo |
|---|---|---|
matchRules[].fullPathMatch
|
La condición fullPathMatch coincide con la ruta de URL completa, que no incluye la cadena de consulta. Debes especificar barras diagonales al final, si procede.
|
Una ruta con una regla de coincidencia de Una |
matchRules[].prefixMatch
|
La condición prefixMatch coincide con el prefijo de la ruta de la URL. Las URLs que empiezan por la misma cadena coinciden.
|
Una ruta con una regla de coincidencia |
matchRules[].pathTemplateMatch
|
La condición pathTemplateMatch admite operadores comodín, lo que le permite encontrar coincidencias con patrones de URL y segmentos de ruta complejos, así como capturar variables con nombre para reescribir URLs.
|
Una ruta con una regla de coincidencia Tanto Para ver más ejemplos, consulta la sección Coincidencia de patrones. |
Para obtener más información, consulta la especificación de la API de MatchRule.
Por ejemplo, para que coincidan todas las solicitudes que empiecen por /stream/, cree una regla de ruta similar a la siguiente:
name: prod-service routing: hostRules: - hosts: - media.example.com - *.vod.example.com pathMatcher: example_routes pathMatchers: - name: example_routes routeRules: - priority: 1 matchRules: - prefixMatch: /stream/
En este ejemplo se incluye explícitamente la barra inclinada final en la regla de coincidencia:
- Una solicitud a
media.example.com/stream/id/1234/hls/manifest.m3u8coincide con esta ruta. - Una solicitud a
media.example.com/stream-eu/id/4567/hls/manifest.m3u8no coincide con esta ruta.
En el segundo caso, Media CDN devuelve un error HTTP 404, a menos que se haya configurado otra ruta o una ruta comodín.
Para obtener información sobre cómo funciona la precedencia en las rutas con prefijos similares, consulta la sección Prioridad y orden de ruta.
Coincidencia con patrones (comodines)
La coincidencia de patrones le permite buscar coincidencias con varias partes de una URL, incluidas las URL parciales y los sufijos (extensiones de archivo), mediante la sintaxis de comodines.
También puede asociar uno o varios segmentos de ruta con variables con nombre en un campo pathTemplateMatch y, a continuación, hacer referencia a esas variables al reescribir la URL en un campo pathTemplateRewrite. De esta forma, puedes reordenar y quitar segmentos de URL antes de que se envíe la solicitud a tu origen.
En el siguiente ejemplo se muestra cómo puedes hacer coincidir dos sufijos de URL diferentes:
# EdgeCacheService.routing.pathMatchers[] routeRules: - priority: 1 description: "Match video segments" matchRules: - pathTemplateMatch: "/**.ts" - pathTemplateMatch: "/**.m4s" origin: prod-video-storage
La sintaxis admitida incluye lo siguiente:
| Operador | Coincide con | Ejemplo |
|---|---|---|
*
|
Coincide con un solo segmento de ruta hasta el siguiente separador de ruta: /
|
/videos/*/*/*.m4s coincide con
/videos/123414/hls/1080p5000_00001.m4s.
|
**
|
Coincide con cero o más segmentos de ruta. Si está presente, debe ser el último operador. |
/**.mpd coincide con
/content/123/india/dash/55/manifest.mpd.
|
{name} or {name=*}
|
Una variable con nombre que coincide con un segmento de ruta.
Coincide con un solo segmento de ruta hasta el siguiente separador de ruta:
|
/content/{format}/{lang}/{id}/{file}.vtt coincide
/content/hls/en-us/12345/en_193913.vtt y captura
format="hls", lang="en-us", id="12345"
y file="en_193913" como variables.
|
{name=videos/*}
|
Una variable con nombre que coincide con más de un segmento de ruta. El segmento de ruta
que coincide con videos/* se captura como variable con nombre.
|
/videos/{language=lang/*}/* coincide con
/videos/lang/en/video.m4s y asigna a la variable de ruta
language el valor lang/en.
|
{name=**}
|
Una variable con nombre que coincide con cero o más segmentos de ruta. Si está presente, debe ser el último operador. |
|
Notas:
- Si no vas a reescribir una URL, usa los operadores
*y**, que son más sencillos. - Cuando se usan variables para capturar segmentos de ruta, las partes de la URL que no se capturan con una variable no se pueden hacer referencia en un
pathTemplateRewriteposterior. Para ver un ejemplo, consulta la sección Capturar variables de ruta. - No puedes hacer referencia a variables en un
pathTemplateRewriteposterior que no existan en elpathTemplateMatchde la misma ruta. - Las variables distinguen entre mayúsculas y minúsculas.
{FORMAT},{forMAT}y{format}representan variables y valores diferentes. - Puede especificar hasta 10 operadores (comodines o variables) en una coincidencia.
Los campos
pathTemplateMatchypathTemplateRewriteno deben superar los 255 caracteres.
Ejemplo: buscar coincidencias en una extensión de archivo
En el siguiente ejemplo se muestra un caso práctico habitual de los operadores comodín: hacer coincidir todos los segmentos de ruta hasta un sufijo.
En este caso, haz lo siguiente:
- Obtiene los manifiestos de vídeo (listas de reproducción) que terminan en
.m3u8y.mpddel origen del manifiesto y aplica un TTL corto (5 segundos) a estas respuestas porque cambian con frecuencia. - Obtiene los segmentos de vídeo que terminan en
.tsy.m4sdel origen del segmento y aplica un TTL más largo (1 día) a estas respuestas.
Este enfoque se suele utilizar cuando se usan servicios de SSAI (inserción de anuncios en el servidor) o DAI (inserción dinámica de anuncios), así como en vídeos en directo en los que el archivo de manifiesto se actualiza cada pocos segundos.
En la siguiente configuración se muestra cómo configurar el enrutamiento de Media CDN para admitir esta opción:
name: prod-service routing: hostRules: - hosts: - media.example.com pathMatcher: example_routes pathMatchers: