A RFC de multimédia oferece capacidades de encaminhamento HTTP avançadas que lhe permitem mapear o tráfego para configurações e origens específicas na extremidade da rede a um nível detalhado.
Configure uma regra de trajeto
Configure uma regra de encaminhamento para um serviço de RFC de conteúdo multimédia.
Consola
Na Google Cloud consola, aceda à página RFC de multimédia.
Para abrir a página Detalhes do serviço para o qual quer configurar uma regra de encaminhamento, clique no nome do serviço.
Para mudar para o modo de edição, clique no botão Editar.
Para navegar para a secção Planeamento de trajeto, clique em Seguinte.
Especifique, pelo menos, uma regra de anfitrião. Clique em Adicionar regra de anfitrião. Em seguida, faça o seguinte:
Para Anfitriões, especifique, pelo menos, um anfitrião para correspondência.
Em Descrição, indique uma breve descrição da regra de anfitrião.
Em alternativa, para editar uma regra de anfitrião, clique na seta para a expandir.
Especifique, pelo menos, uma regra de encaminhamento. Clique em Adicionar regra de encaminhamento.
Em alternativa, para editar uma regra de encaminhamento, clique em Editar na linha respetiva.
No painel Editar regra de encaminhamento, para Prioridade, defina um valor para a prioridade de encaminhamento.
Em Descrição, indique uma breve descrição que possa ajudar a identificar a regra numa lista de regras.
Na secçã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:
- Para Tipo de correspondência, selecione qualquer opção de correspondência de caminho.
Para Correspondência de caminho, especifique os nomes, os caminhos ou os modelos. Considere usar a correspondência de padrões com carateres universais.
Se necessário, selecione também Ativar sensibilidade a maiúsculas e minúsculas para o valor do caminho.
Opcional: selecione Os cabeçalhos correspondem e Os parâmetros de consulta correspondem. 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 o artigo Faça a correspondência com base nos cabeçalhos e nos parâmetros de consulta.
Para guardar a condição de correspondência, clique em Concluído.
Para Ação principal, selecione uma das seguintes opções:
Obter a partir de uma origem: para direcionar pedidos para uma origem específica, selecione esta opção e, de seguida, selecione uma origem.
Redirecionamento de URL: para redirecionar pedidos, selecione esta opção. Em seguida, especifique o tipo de redirecionamento, o caminho e o código de estado.
Opcionalmente, selecione as opções para redirecionar todas as respostas para HTTPS ou remover a consulta.
Clique em Configurações avançadas.
Na secção Ação do cabeçalho, clique em Adicione um item.
Selecione um tipo de ação e, de seguida, especifique um cabeçalho como um par de nome e valor. Em seguida, clique em Concluído.
Na secção Ação de encaminhamento, clique em Adicione um item.
Especifique um tipo de ação e as respetivas opções relacionadas. Em seguida, clique em Concluído.
Para a filtragem de métodos HTTP, selecione Personalizar filtragem de métodos HTTP.
Em seguida, selecione os métodos HTTP que quer encaminhar para a sua origem.
Para guardar a regra de encaminhamento, clique em Guardar.
Para guardar as alterações ao serviço, clique em Atualizar serviço.
gcloud e YAML
Exporte a configuração da RFC de conteúdo multimédia para um ficheiro YAML. Use o comando
gcloud edge-cache services export.gcloud edge-cache services export SERVICE_NAME \ --destination=FILENAME.yamlSubstitua o seguinte:
SERVICE_NAME: o nome do seu serviçoFILENAME: o nome do seu ficheiro YAML
Atualize o ficheiro YAML com a configuração necessária, conforme descrito nas secções desta página.
Para atualizar o serviço, importe a configuração da RFC de multimédia a partir do ficheiro YAML. Use o comando
gcloud edge-cache services import.gcloud edge-cache services import SERVICE_NAME \ --source=FILENAME.yaml
Pedidos de correspondência
Uma configuração da RFC de multimédia contém um conjunto de rotas definidas na secção
Routing
para um recurso
EdgeCacheService.
Estas rotas fazem corresponder pedidos com base (pelo menos) num anfitrião. Para mais detalhes sobre como o tráfego é direcionado para uma origem, consulte os artigos HostRule e PathMatcher.
Cada rota pode definir a sua própria configuração de RFC, reescritas, redirecionamentos, políticas de CORS, cabeçalhos HTTP personalizados e mapeamento de origem.
Os trajetos podem partilhar origens.
Por exemplo, pode encaminhar pedidos de manifestos para uma origem específica e definir um TTL da cache de curta duração e uma política de colocação em cache negativa. Os pedidos de segmentos podem ser divididos para outra origem através de cabeçalhos e parâmetros de consulta para discriminar tipos de manifestos ou utilizadores específicos.
O exemplo seguinte mostra como encaminhar pedidos que correspondem a um cabeçalho específico,
a um parâmetro de consulta e a um prefixo do caminho para o anfitrião 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 caminhos
A RFC é compatível com a correspondência de caminhos completa (exata), de prefixos e de carateres universais. A correspondência de caminhos pode ser combinada com a correspondência baseada em anfitriões, cabeçalhos e parâmetros de consulta para criar regras de encaminhamento de pedidos detalhadas.
Seguem-se três formas de fazer a correspondência com um caminho de URL.
| Campo | Descrição | Exemplo |
|---|---|---|
matchRules[].fullPathMatch
|
A condição fullPathMatch corresponde ao caminho do URL completo, que não inclui a string de consulta. Tem de especificar barras invertidas finais, se relevante.
|
Uma rota com uma regra de correspondência de Um |
matchRules[].prefixMatch
|
A condição prefixMatch corresponde ao prefixo do caminho do URL. Os URLs que começam pela mesma string correspondem.
|
Uma rota com uma regra de correspondência de |
matchRules[].pathTemplateMatch
|
A condição pathTemplateMatch suporta
operadores de carateres universais, o que lhe permite fazer corresponder padrões de URL complexos e segmentos
de caminhos, bem como capturar variáveis com nomes para reescrever URLs.
|
Uma rota com uma regra de correspondência de
Ambos os URLs Para mais exemplos, consulte a secção Correspondência de padrões. |
Para mais detalhes, consulte a especificação da API para MatchRule.
Por exemplo, para fazer corresponder todos os pedidos que começam por /stream/, crie uma regra de encaminhamento
semelhante à seguinte:
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:
- Um pedido para
media.example.com/stream/id/1234/hls/manifest.m3u8corresponde a este trajeto. - Um pedido para
media.example.com/stream-eu/id/4567/hls/manifest.m3u8não corresponde a este trajeto.
No segundo caso, a RFC devolve um erro HTTP 404, a menos que exista outra rota ou uma rota genérica configurada.
Para orientações sobre como a precedência funciona para rotas com prefixos semelhantes, consulte a secção Prioridade e ordenação de rotas.
Correspondência de padrões (caracteres universais)
A correspondência de padrões permite-lhe fazer corresponder várias partes de um URL, incluindo URLs parciais e sufixos (extensões de ficheiros), através da sintaxe de carateres universais.
Também pode associar um ou mais segmentos do caminho a variáveis com nomes num campo pathTemplateMatch e, em seguida, referir-se a essas variáveis ao reescrever o URL num campo pathTemplateRewrite. Isto permite-lhe reordenar e remover segmentos de URL antes de o pedido ser enviado para a sua origem.
O exemplo seguinte mostra como pode 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 suportada inclui o seguinte.
| Operador | Correspondências | Exemplo |
|---|---|---|
*
|
Corresponde a um único segmento de caminho, até ao separador de caminho seguinte: /
|
/videos/*/*/*.m4s corresponde a
/videos/123414/hls/1080p5000_00001.m4s.
|
**
|
Corresponde a zero ou mais segmentos do caminho. Se estiver presente, tem de ser o último operador. |
/**.mpd corresponde a
/content/123/india/dash/55/manifest.mpd.
|
{name} or {name=*}
|
Uma variável com nome que corresponda a um segmento do caminho.
Corresponde a um único segmento do caminho, até ao separador do caminho seguinte:
|
/content/{format}/{lang}/{id}/{file}.vtt corresponde
/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 com nome que corresponde a mais de um segmento do caminho. O segmento do caminho
que corresponde a videos/* é capturado como a variável com nome.
|
/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 com nome que corresponde a zero ou mais segmentos do caminho. Se estiver presente, tem de ser o último operador. |
|
Notas:
- Se não estiver a reescrever um URL, use os operadores mais simples
*e**. - Quando usa variáveis para capturar segmentos de caminho, não é possível fazer referência a nenhuma parte do URL que não seja capturada por uma variável num
pathTemplateRewritesubsequente. Para ver um exemplo, consulte a secção Capturar variáveis de caminho. - Não pode fazer referência a variáveis num
pathTemplateRewritesubsequente que não existam nopathTemplateMatchno mesmo trajeto. - As variáveis são sensíveis a maiúsculas e minúsculas, com
{FORMAT},{forMAT}e{format}a representar diferentes variáveis e valores. - Pode especificar até 10 operadores (caracteres universais ou variáveis) numa correspondência.
Os campos
pathTemplateMatchepathTemplateRewritenão podem exceder os 255 carateres.
Exemplo: fazer correspondência com uma extensão de ficheiro
O exemplo seguinte mostra um exemplo de utilização comum para operadores de carateres universais: estabelecer correspondência com todos os segmentos do caminho até um sufixo.
Neste caso, faça o seguinte:
- Obter manifestos de vídeo (playlists) que terminam em
.m3u8e.mpdda origem do manifesto, aplicando um TTL curto (5 segundos) a estas respostas porque mudam regularmente. - Obter segmentos de vídeo que terminam em
.tse.m4sa partir da origem do segmento e aplicar um TTL mais longo (1 dia) a estas respostas.
Esta abordagem é frequentemente usada quando se usam 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ídeo em direto em que o manifesto é atualizado a cada poucos segundos.
A configuração seguinte demonstra como configurar o encaminhamento da RFC para suportar esta funcionalidade:
name: prod-service routing: hostRules: - hosts: - media.example.com pathMatcher: example_routes pathMatchers: - name: