Como as solicitações são roteadas

Nesta página, descrevemos como as solicitações HTTP dos usuários chegam à versão apropriada de um serviço. As solicitações podem ser encaminhadas de duas maneiras:

  • As regras de roteamento padrão do App Engine se aplicam às solicitações com um URL que termina no nível do domínio.

  • Também é possível usar um arquivo de expedição que roteia os padrões de URL específicos de acordo com as regras que você estabelece.

Essas opções se aplicam apenas a aplicativos implantados. Ao testar o aplicativo localmente, o comportamento do roteamento depende dos ambientes de execução e de desenvolvimento específicos que você está usando.

Solicitações e domínios

O App Engine determina que uma solicitação recebida é destinada ao aplicativo usando o nome de domínio da solicitação. Uma solicitação com nome de domínio http://[YOUR_PROJECT_ID].appspot.com é roteada para o aplicativo com ID [YOUR_PROJECT_ID]. Cada aplicativo recebe um nome de domínio appspot.com gratuitamente.

Os domínios appspot.com também são compatíveis com subdomínios do formato [SUBDOMAIN]-dot-[YOUR_PROJECT_ID].appspot.com, em que [SUBDOMAIN] pode ser qualquer string permitida em uma parte de um nome de domínio, excluindo o caractere .. As solicitações enviadas a qualquer subdomínio dessa maneira são encaminhadas ao aplicativo.

Configure um domínio de nível superior personalizado usando o G Suite e atribua subdomínios a vários aplicativos, como o Gmail ou o Google Sites. Também é possível associar um aplicativo do App Engine a um subdomínio. Para mais informações sobre como associar um domínio personalizado ao aplicativo, consulte Como proteger domínios personalizados com SSL.

As solicitações para esses URLs são todas encaminhadas para a versão do aplicativo configurada para receber o tráfego. Cada versão do aplicativo também tem um URL próprio para que você implante e teste uma versão nova antes de configurá-la para receber o tráfego. O URL específico da versão usa o ID de uma versão específica além do nome de domínio appspot.com, por exemplo: http://[VERSION_ID]-dot-[YOUR_PROJECT_ID].appspot.com. Também é possível usar subdomínios com o URL específico da versão: http://[SUBDOMAIN]-dot-[VERSION_ID]-dot-[YOUR_PROJECT_ID].appspot.com. Consulte Como fazer roteamento por URL para mais informações e exemplos.

O nome de domínio usado para a solicitação é incluído nos dados da solicitação que são passados para seu aplicativo. Portanto, é possível usar os dados da solicitação para controlar como o aplicativo responde com base no nome de domínio na solicitação. Por exemplo, se você quiser redirecionar para um domínio oficial, é possível codificar seu aplicativo para verificar o cabeçalho da solicitação Host e responder de acordo com o nome de domínio.

Como fazer roteamento por URL

É possível direcionar uma solicitação HTTP com vários graus de especificidade. Nos exemplos a seguir, appspot.com pode ser substituído pelo domínio personalizado do seu aplicativo , se você tiver um. As substrings [VERSION_ID], [SERVICE_ID] e [MY_PROJECT_ID] do URL representam os IDs dos recursos do app.

Dica: use as ferramentas a seguir para recuperar os IDs dos recursos do aplicativo:

Console

No Console do GCP, veja as páginas correspondentes a Instâncias, Serviços e Versões.

gcloud

Execute o comando gcloud app instances list para listar os IDs dos recursos em um projeto específico do GCP.

API

Para recuperar os IDs de recursos de maneira programática, consulte os métodos list na API Admin.

Roteamento padrão

Os padrões de URL a seguir têm um comportamento de roteamento padrão. O roteamento padrão será modificado se houver um padrão correspondente definido no arquivo de expedição:

  • Envia a solicitação para uma instância disponível do serviço default:
    https://[MY_PROJECT_ID].appspot.com
    http://[MY_CUSTOM_DOMAIN]

    As solicitações são recebidas por qualquer versão configurada para tráfego no serviço default.

  • Envia uma solicitação para uma instância disponível de um serviço específico:
    https://[SERVICE_ID]-dot-[MY_PROJECT_ID].appspot.com
    http://[SERVICE_ID].[MY_CUSTOM_DOMAIN]

    As solicitações são recebidas por qualquer versão configurada para o recebimento do tráfego no serviço de destino. Se não existir um serviço de destino, a solicitação será roteada probabilisticamente.

  • Envia uma solicitação para uma instância disponível de uma versão específica no
    serviço default:
    https://[VERSION_ID]-dot-[MY_PROJECT_ID].appspot.com
    http://[VERSION_ID].[MY_CUSTOM_DOMAIN]

    Quando um serviço não é direcionado, as solicitações são enviadas para o serviço default.

Roteamento probabilístico

Se uma solicitação corresponder à parte [YOUR_PROJECT_ID].appspot.com do nome do host, mas incluir um serviço, uma versão ou um nome de instância que não existe, a solicitação será roteada para o serviço default. O roteamento probabilístico não se aplica a domínios personalizados. As solicitações feitas para esse tipo de domínio retornarão um código de status HTTP 404 se o nome do host for inválido.

Roteamento direcionado

Os padrões de URL a seguir têm a garantia de que chegarão ao destino, se eles existirem. Essas solicitações nunca são interceptadas e roteadas novamente pelos padrões definidos no arquivo de expedição:

  • Envia a solicitação para uma instância disponível de um serviço e versão específicos:
    https://[VERSION_ID]-dot-[SERVICE_ID]-dot-[MY_PROJECT_ID].appspot.com
    http://[VERSION_ID].[SERVICE_ID].[MY_PROJECT_ID].[MY_CUSTOM_DOMAIN]

Serviço padrão

O serviço default é criado quando você implanta a versão inicial do aplicativo no App Engine. Solicitações que em que nenhum serviço ou um serviço inválido é especificado são roteadas para o serviço default. Essas solicitações são processadas pelas versões que você configurou para receber tráfego no serviço default. Veja quais versões estão configuradas para tráfego na página "Versões" do Console do GCP.

Exemplo

Para ajudar a demonstrar os padrões de URL, suponha que exista um exemplo de projeto do GCP com o ID requestsProject e inclua um aplicativo que esteja executando dois serviços e versões. O serviço default do aplicativo de exemplo inclui a versão vFrontend e o segundo serviço service2 inclui a versão vBackend.

Para fazer com que serviços e versões específicos sejam o destino das solicitações, use os padrões de URL a seguir:

  1. Para direcionar a versão no serviço default usando HTTPS, é possível usar:

    https://vFrontend-dot-default-dot-requestsProject.appspot.com
    https://vFrontend-dot-requestsProject.appspot.com
    
  2. Para direcionar a versão vBackend usando um domínio personalizado sem HTTPS, é possível usar:

    http://vBackend.service2.example.net
    http://vBackend.example.net
    

    em que requestsProject.appspot.com é mapeado para o domínio example.net.

Roteamento com um arquivo de expedição

Para URLs que usam os padrões descritos anteriormente, crie um arquivo de expedição para modificar as regras de roteamento do App Engine e definir suas próprias regras personalizadas. Com um arquivo de expedição, é possível enviar solicitações a serem recebidas por um serviço específico com base no caminho ou nome do host no URL da solicitação.

Para detalhes sobre como criar um arquivo de expedição, consulte a referência do dispatch.yaml.

Como criar um arquivo de expedição

O arquivo de expedição precisa ser colocado na raiz do diretório do projeto ou no diretório raiz do serviço default. É possível definir até 20 regras de roteamento no arquivo de expedição, e cada regra consiste nos elementos service e url.

Por exemplo, é possível criar um arquivo de expedição para rotear solicitações de dispositivos móveis, como http://simple-sample.appspot.com/mobile/, para um front-end móvel e rotear solicitações de worker, como http://simple-sample.appspot.com/work/, para um back-end estático:

dispatch:
  # Send all mobile traffic to the mobile frontend.
  - url: "*/mobile/*"
    service: mobile-frontend

  # Send all work to the one static backend.
  - url: "*/work/*"
    service: static-backend

Para detalhes sobre como definir esse arquivo, consulte a documentação de referência do dispatch.yaml.

Como implantar o arquivo de expedição

Para implantar o arquivo de configuração de despacho, execute o seguinte comando:

gcloud

gcloud app deploy dispatch.yaml
Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Ambiente flexível do App Engine para documentos .NET