Como as solicitações são encaminhadas

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 roteadas 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 encaminha padrões de URL específicos de acordo com as regras que você estabelecer.

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

Solicitações e domínios

No App Engine, o nome de domínio da solicitação de entrada é usado para determinar se ela é destinada ao aplicativo. Uma solicitação com o nome de domínio http://[YOUR_PROJECT_ID].appspot.com é encaminhada ao aplicativo que tem o código[YOUR_PROJECT_ID]. Todos os aplicativos recebem um nome de domínio appspot.com gratuitamente.

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

Configure um domínio de nível mais alto personalizado usando o G Suite e atribuir subdomínios a vários aplicativos como o Google Mail ou Sites. Também é possível associar um aplicativo do App Engine a um subdomínio. Para ver 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ê possa implantar e testar uma versão nova antes de configurá-la para receber o tráfego. O URL específico da versão usa o código de uma determinada versão, além do nome de domínio appspot.com. Por exemplo: http://[VERSION_ID]-dot-[YOUR_PROJECT_ID].appspot.com. Você também pode usar subdomínios com o URL específico da versão: http://[SUBDOMAIN]-dot-[VERSION_ID]-dot-[YOUR_PROJECT_ID].appspot.com. Consulte Roteamento por URL para ver mais informações e exemplos.

O nome de domínio usado para a solicitação está incluído nos dados da solicitação que são transmitidos ao aplicativo. Portanto, é possível usar os dados da solicitação para controlar como o aplicativo responde de acordo com o nome de domínio na solicitação. Por exemplo, para redirecionar para um domínio oficial, é possível codificar o aplicativo para verificar o cabeçalho Host da solicitação e, em seguida, responder de acordo com o nome de domínio.

Roteamento por URL

É possível direcionar uma solicitação HTTP com vários graus de especificidade. Nos exemplos a seguir, appspot.com é substituído pelo domínio personalizado do aplicativo, se houver um. As substrings de URL [VERSION_ID],[SERVICE_ID]e[MY_PROJECT_ID]representam os códigos de recursos do aplicativo.

Dica: use as ferramentas a seguir para recuperar os códigos dos recursos do aplicativo:

Console

No Console do GCP, é possível ver as páginas Instâncias, Serviços e Versões correspondentes.

gcloud

Execute o comando gcloud app instances list para gerar uma lista dos códigos de recursos em um projeto específico do GCP.

API

Para recuperar os códigos 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. Observe que o roteamento padrão é modificado se houver um padrão correspondente definido por você 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 o recebimento do 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 o serviço de destino não existir, a solicitação será encaminhada 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 não há um serviço de destino, as solicitações são enviadas para o default.

Roteamento probabilístico

Quando uma solicitação corresponde à parte [YOUR_PROJECT_ID].appspot.com do nome do host, mas inclui um nome de serviço, versão ou instância que não existe, ela é encaminhada 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 ele existir. Essas solicitações nunca são interceptadas e reencaminhadas 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 default

O serviço default é criado durante a implantação da versão inicial do aplicativo no App Engine. As solicitações que especificam o serviço como inexistente ou inválido são encaminhadas para o serviço default. Essas solicitações são processadas pelas versões configuradas para receber o 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 entender os padrões de URL, imagine um projeto do GCP com o código requestsProject, que inclui um aplicativo que executa dois serviços e versões. O serviço default do aplicativo de exemplo inclui a versão vFrontend. Já 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 definir como destino a versão no serviço default por meio de HTTPS, use:

    https://vFrontend-dot-default-dot-requestsProject.appspot.com
    https://vFrontend-dot-requestsProject.appspot.com
    
  2. Para definir como destino a versão vBackend por meio de 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, você pode enviar solicitações de entrada para um serviço específico com base no caminho ou nome do host no URL da solicitação.

Para mais 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 encaminhamento no arquivo de expedição. Cada regra é composta dos elementos service e url.

Por exemplo, você pode criar um arquivo de expedição para encaminhar solicitações de dispositivos móveis como http://simple-sample.appspot.com/mobile/ para um front-end móvel e encaminhar solicitações de trabalho 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

Consulte a documentação de referência do dispatch.yaml para mais detalhes sobre como defini-lo.

Como implantar o arquivo de expedição

Para implantar o arquivo de configuração de expedição, 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