Todos os produtos
Search
Central de documentação

Microservices Engine:Configure a rewrite policy

Última atualização: Jun 28, 2026

Quando as URLs externas diferem dos caminhos internos do serviço, as requisições recebidas não alcançam os endpoints de backend corretos. Uma política de reescrita modifica o caminho ou o hostname nas requisições antes que o gateway nativo da nuvem as encaminhe aos serviços de backend — por exemplo, removendo um prefixo de versão como /v1 ou roteando o tráfego para um host diferente durante uma migração.

Como funcionam as políticas de reescrita

Os gateways nativos da nuvem oferecem suporte a duas categorias de reescrita:

  • Reescrita de caminho: altera o caminho da URL. Três métodos estão disponíveis: reescrita exata, reescrita de prefixo e reescrita regex.

  • Reescrita de host: altera o hostname. Somente a reescrita exata tem suporte.

Compatibilidade dos métodos de reescrita

Cada método de reescrita exige um tipo específico de correspondência de rota. Antes de configurar uma política de reescrita, verifique se a rota utiliza um tipo de correspondência compatível.

Tipo de correspondência de rota

Métodos de reescrita compatíveis

Exact Match

Exact Rewrite

Prefix Match

Prefix Rewrite, Regex Rewrite

Regex Match

Exact Rewrite, Regex Rewrite

Métodos de reescrita de caminho

Reescrita exata

A reescrita exata substitui todo o caminho da requisição por um novo caminho.

Exemplo: reescrever /app/test para /foo/bar

Configuração

Valor

Tipo de correspondência de rota

Exact Match

Caminho da rota

/app/test

Método de reescrita

Exact Rewrite

Caminho de destino

/foo/bar

Importante

A reescrita exata funciona apenas com os tipos de correspondência de rota Exact Match ou Regex Match. Ela não é compatível com Prefix Match.

Reescrita de prefixo

A reescrita de prefixo substitui apenas a parte correspondente ao prefixo no caminho da requisição. O restante do caminho permanece inalterado.

Exemplo 1: remover o prefixo /app — reescrever /app/test para /test

Configuração

Valor

Tipo de correspondência de rota

Prefix Match

Caminho da rota

/app/

Método de reescrita

Prefix Rewrite

Caminho de destino

/

Importante

A barra final em /app/ é obrigatória. A reescrita de prefixo substitui apenas o prefixo correspondente. Se você definir o caminho da rota como /app (sem a barra final), o caminho reescrito se tornará //test, o que é inválido.

Exemplo 2: trocar um prefixo de versão — reescrever /v1/test para /v2/test

Configuração

Valor

Tipo de correspondência de rota

Prefix Match

Caminho da rota

/v1

Método de reescrita

Prefix Rewrite

Caminho de destino

/v2

Importante

A reescrita de prefixo funciona apenas com o tipo de correspondência de rota Prefix Match. Todas as requisições cujo caminho começa com o prefixo especificado são correspondidas e reescritas; portanto, confirme se essa reescrita abrangente é realmente desejada. Para reescrever apenas caminhos específicos, utilize a reescrita exata.

Reescrita regex

A reescrita regex usa uma expressão regular para corresponder e substituir partes do caminho da requisição. A configuração de reescrita regex possui dois parâmetros:

  • Mode: o padrão regex que identifica as partes do caminho a serem substituídas.

  • Replacement: a string de substituição que substitui as partes correspondentes.

O gateway utiliza a sintaxe de expressões regulares RE2. Para testar padrões antes de aplicá-los, use uma ferramenta online como o Regex101 (selecione o flavor Golang, que usa RE2).

Exemplo 1: substituição global — reescrever /aaa/one/bbb/one/ccc para /aaa/two/bbb/two/ccc

Configuração

Valor

Tipo de correspondência de rota

Exact Match

Caminho da rota

/aaa/one/bbb/one/ccc

Método de reescrita

Regex Rewrite

Mode

one

Replacement

two

Exemplo 2: reordenação de grupos de captura — para requisições que correspondem a /httpbin/(.*)/(.*), remova o prefixo /httpbin e troque os dois segmentos capturados de lugar.

Configuração

Valor

Tipo de correspondência de rota

Regex Match

Caminho da rota

/httpbin/(.*)/(.*)

Método de reescrita

Regex Rewrite

Mode

/httpbin/(.*)/(.*)

Replacement

/\2/\1

Na string de substituição, \1 refere-se ao primeiro grupo de captura e \2 refere-se ao segundo. Eles equivalem a $1 e $2 no NGINX Ingress.

Nota

A reescrita regex é o método mais complexo. Quando uma reescrita exata ou de prefixo mais simples atinge o mesmo resultado, prefira esses métodos.

Reescrita de host

A reescrita de host substitui o hostname na requisição usando o método de reescrita exata.

Exemplo: reescrever o hostname de test.com para dev.com

Defina o campo Destination Host na política de reescrita como dev.com.

Configurar uma política de reescrita

Pré-requisitos

Antes de começar, certifique-se de ter:

  • Uma instância de gateway nativo da nuvem no MSE

  • Pelo menos uma rota configurada no gateway

Procedimento

  1. Faça login no console do MSE. Na barra de navegação superior, selecione uma região.

  2. No painel de navegação à esquerda, escolha Cloud-native Gateway > Gateways. Na página Gateways, clique em nome do seu gateway.

  3. No painel de navegação à esquerda, clique em Routes e, em seguida, clique em aba Routes.

  4. Localize a regra de roteamento desejada e clique em Policies na coluna Actions.

  5. Na aba Policies, clique em Rewrite no painel de navegação à esquerda. Configure os parâmetros de reescrita e clique em Save. Os métodos de reescrita disponíveis dependem do tipo de correspondência da rota:

    Tipo de caminho original

    Tipos de caminho de destino disponíveis

    Exact Match

    Exact Rewrite

    Prefix Match

    Prefix Rewrite, Regex Rewrite

    Regex Match

    Exact Rewrite, Regex Rewrite

  6. Ative a chave Enable. Na caixa de diálogo de confirmação, clique em OK.

    • Ativado: o gateway reescreve caminhos e hostnames com base na política configurada antes de encaminhar as requisições aos serviços de backend.

    • Desativado: o gateway encaminha as requisições sem modificar caminhos ou hostnames.

Verificar o resultado

Este exemplo usa uma reescrita de prefixo para remover o prefixo de roteamento /app1 das requisições externas. O serviço de backend espera caminhos sem esse prefixo, então a política de reescrita mapeia /app1/ para /.

Requisição original (com o prefixo /app1):

curl -I http://121.196.XX.XX/app1/demo/item/list

Após a reescrita (o gateway encaminha a requisição ao backend com o caminho /demo/item/list):

curl -I http://121.196.XX.XX/demo/item/list