O Media CDN oferece recursos avançados de roteamento HTTP que permitem mapear o tráfego para origens e configurações específicas de borda em um nível refinado.
Configurar uma regra de rota
Configure uma regra de rota para um serviço do Media CDN.
Console
No console do Google Cloud , acesse a página Media CDN.
Para abrir a página Detalhes do serviço em que você quer configurar uma regra de rota, clique no nome dele.
Para mudar para o modo de edição, clique no botão Editar.
Para navegar até a seção Roteamento, clique em Próxima.
Especifique pelo menos uma regra de host. Clique em Adicionar regra de host. Em seguida, faça o seguinte:
Em Hosts, especifique pelo menos um host para correspondência.
Em Descrição, forneça uma breve descrição para a regra de host.
Se quiser editar uma regra de host, clique na seta para abrir.
Especifique pelo menos uma regra de rota. Clique em Adicionar regra de rota.
Para editar uma regra de rota, clique em Editar na linha correspondente.
No painel Editar regra de rota, em Prioridade, defina um valor para a prioridade de rota.
Em Descrição, forneça uma breve descrição que ajude a identificar a regra em uma lista.
Na seção Correspondência, especifique pelo menos uma condição de correspondência. Clique em Adicionar uma condição de correspondência. Em seguida, faça o seguinte:
- Em Tipo de correspondência, selecione qualquer opção de correspondência de caminho.
Em Correspondência de caminho, especifique os nomes, caminhos ou modelos. Considere usar a correspondência de padrões com caracteres curinga.
Se necessário, selecione também Ativar a diferenciação de maiúsculas e minúsculas para o valor do caminho.
Opcional: selecione Correspondência de cabeçalhos e Correspondência de parâmetros de consulta. Em seguida, clique nos botões relevantes para adicionar cabeçalhos e parâmetros de consulta. Para cada um, especifique o nome, o tipo de correspondência e o valor.
Para mais informações, consulte Correspondência em cabeçalhos e parâmetros de consulta.
Para salvar a condição de correspondência, clique em Concluído.
Em Ação principal, selecione uma das seguintes opções:
Buscar em uma origem: para direcionar solicitações a uma origem específica, selecione essa opção e escolha uma origem.
Redirecionamento de URL: para redirecionar solicitações, selecione essa opção. Em seguida, especifique o tipo de redirecionamento, o caminho e o código de status.
Se quiser, selecione as opções para redirecionar todas as respostas para HTTPS ou remover a consulta.
Clique em Configurações avançadas.
Na seção Ação do cabeçalho, clique em Adicionar um item.
Selecione um tipo de ação e especifique um cabeçalho como um par de nome e valor. Em seguida, clique em Concluído.
Na seção Rota de ação, clique em Adicionar um item.
Especifique um tipo de ação e as opções relacionadas. Em seguida, clique em Concluído.
Para Filtragem de método HTTP, selecione Personalizar filtragem de método HTTP.
Em seguida, selecione os métodos HTTP que você quer encaminhar por proxy para a origem.
Para salvar a regra de rota, clique em Salvar.
Para salvar as mudanças no serviço, clique em Atualizar serviço.
gcloud e YAML
Exporte sua configuração da Media CDN para um arquivo YAML. Use o comando
gcloud edge-cache services export.gcloud edge-cache services export SERVICE_NAME \ --destination=FILENAME.yamlSubstitua:
SERVICE_NAME: o nome do serviço;FILENAME: o nome do arquivo YAML
Atualize o arquivo YAML com a configuração necessária, conforme descrito nas seções desta página.
Para atualizar o serviço, importe a configuração da Media CDN do arquivo YAML. Use o comando
gcloud edge-cache services import.gcloud edge-cache services import SERVICE_NAME \ --source=FILENAME.yaml
Solicitações de correspondência
Uma configuração do Media CDN contém um conjunto de rotas definidas na seção Roteamento de um recurso EdgeCacheService.
Essas rotas correspondem a solicitações com base em um host (no mínimo). Para mais detalhes sobre como o tráfego é direcionado a uma origem, consulte HostRule e PathMatcher.
Cada rota pode definir a própria configuração de CDN, reescritas, redirecionamentos,
políticas de CORS, cabeçalhos HTTP personalizados e mapeamento de origem.
As rotas podem compartilhar origens.
Por exemplo, é possível rotear solicitações de manifestos para uma origem específica e definir um TTL de cache de curta duração e uma política de armazenamento em cache negativo. As solicitações de segmentos podem ser divididas para outra origem usando cabeçalhos e parâmetros de consulta para separar tipos de manifesto ou usuários específicos.
O exemplo a seguir mostra como rotear solicitações que correspondem a um cabeçalho, parâmetro de consulta e prefixo de caminho específicos para o 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
Correspondência de caminho
A Media CDN oferece suporte a correspondência de caminhos completa (exata), de prefixo e de caractere curinga. A correspondência de caminho pode ser combinada com a correspondência baseada em host, cabeçalho e parâmetro de consulta para criar regras de roteamento de solicitação refinadas.
Confira três maneiras de fazer a correspondência com um caminho do URL.
| Campo | Descrição | Exemplo |
|---|---|---|
matchRules[].fullPathMatch
|
A condição fullPathMatch corresponde ao caminho completo do URL, que não inclui a string de consulta. Você precisa especificar barras invertidas finais, se relevante.
|
Uma rota com uma regra de correspondência de Uma |
matchRules[].prefixMatch
|
A condição prefixMatch corresponde ao prefixo do caminho do URL. Os URLs que começam com a mesma string são correspondentes.
|
Uma rota com uma regra de correspondência de |
matchRules[].pathTemplateMatch
|
A condição pathTemplateMatch aceita operadores curinga, permitindo que você faça a correspondência de padrões de URL e segmentos de caminho complexos, além de capturar variáveis nomeadas para reescrever URLs.
|
Uma rota com uma regra de correspondência de
Para mais exemplos, consulte a seção correspondência de padrões. |
Para mais detalhes, consulte a especificação da API para
MatchRule.
Por exemplo, para corresponder a todas as solicitações que começam com /stream/, crie uma regra de rota
semelhante a esta:
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/
Este exemplo inclui explicitamente a barra invertida final na regra de correspondência:
- Uma solicitação para
media.example.com/stream/id/1234/hls/manifest.m3u8corresponde a esta rota. - Uma solicitação para
media.example.com/stream-eu/id/4567/hls/manifest.m3u8não corresponde a essa rota.
No segundo caso, o Media CDN retorna um erro HTTP 404, a menos que haja outra rota ou uma rota catch-all configurada.
Para orientações sobre como a precedência funciona em rotas com prefixos semelhantes, consulte a seção Prioridade e ordem de rotas.
Correspondência de padrões (caractere curinga)
Com a correspondência de padrão, é possível combinar várias partes de um URL, incluindo URLs parciais e sufixos (extensões de arquivo), usando uma sintaxe curinga.
Também é possível associar um ou mais segmentos de caminho a variáveis nomeadas em um campo pathTemplateMatch e, em seguida, consultar essas variáveis ao reescrever o URL em um campo pathTemplateRewrite. Isso permite reordenar e remover segmentos de URL antes
que a solicitação seja enviada à sua origem.
O exemplo a seguir mostra como fazer a correspondência com dois sufixos de URL diferentes:
# EdgeCacheService.routing.pathMatchers[] routeRules: - priority: 1 description: "Match video segments" matchRules: - pathTemplateMatch: "/**.ts" - pathTemplateMatch: "/**.m4s" origin: prod-video-storage
A sintaxe compatível inclui o seguinte.
| Operador | Corresponde a | Exemplo |
|---|---|---|
*
|
Corresponde a um único segmento de caminho até o próximo separador de caminho: /
|
/videos/*/*/*.m4s corresponde a
/videos/123414/hls/1080p5000_00001.m4s.
|
**
|
Corresponde a zero ou mais segmentos de caminho. Se presente, precisa ser o último operador. |
/**.mpd corresponde a
/content/123/india/dash/55/manifest.mpd.
|
{name} or {name=*}
|
Uma variável nomeada que corresponde a um só segmento de caminho.
Corresponde a um único segmento de caminho, até o próximo separador de caminho: |
/content/{format}/{lang}/{id}/{file}.vtt corresponde a
/content/hls/en-us/12345/en_193913.vtt e captura
format="hls", lang="en-us", id="12345",
e file="en_193913" como variáveis.
|
{name=videos/*}
|
Uma variável nomeada que corresponde a mais de um segmento de caminho. O segmento de caminho que corresponde a videos/* é capturado como a variável nomeada.
|
/videos/{language=lang/*}/* corresponde a
/videos/lang/en/video.m4s e preenche a variável de caminho
language com o valor lang/en.
|
{name=**}
|
Uma variável nomeada que corresponde a zero ou mais segmentos de caminho. Se presente, precisa ser o último operador. |
|
Observações:
- Se você não estiver reescrevendo um URL, use os operadores mais simples
*e**. - Ao usar variáveis para capturar segmentos de caminho, as partes do URL que não são capturadas por uma variável não podem ser referenciadas em um
pathTemplateRewritesubsequente. Por exemplo, consulte a seção Capturar variáveis de caminho. - Não é possível se referir a variáveis em um
pathTemplateRewritesubsequente que não existem nopathTemplateMatchna mesma rota. - As variáveis diferenciam maiúsculas de minúsculas, com
{FORMAT},{forMAT}e{format}representando variáveis e valores diferentes. - É possível especificar até 10 operadores (curingas ou variáveis) em uma correspondência.
Os campos
pathTemplateMatchepathTemplateRewritenão podem exceder 255 caracteres.
Exemplo: correspondência em uma extensão de arquivo
O exemplo a seguir mostra um caso de uso comum para operadores curinga: corresponder a todos os segmentos de caminho até um sufixo.
Nesse caso, faça o seguinte:
- Busque manifestos de vídeo (playlists) que terminam em
.m3u8e.mpdna origem do manifesto, aplicando um TTL curto (5 segundos) a essas respostas porque elas mudam regularmente. - Extraia segmentos de vídeo que terminam em
.tse.m4sda origem do segmento e aplique um TTL mais longo (um dia) a essas respostas.
Essa abordagem é usada com frequência ao usar serviços de SSAI (inserção de anúncios do lado do servidor) ou DAI (inserção de anúncios dinâmicos) e para vídeos ao vivo em que o manifesto é atualizado a cada poucos segundos.
A configuração a seguir demonstra como configurar o roteamento da Media CDN para oferecer suporte a isso:
name: prod-service routing: hostRules: - hosts: - media.example.com pathMatcher: