Como as solicitações são encaminhadas

Esta página descreve 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 encaminhamento padrão do App Engine aplicam-se às solicitações com um URL que termina no nível do domínio.

  • Também é possível usar um arquivo de expedição para encaminhar os padrões de URL específicos, de acordo com suas próprias regras.

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

Solicitações e domínios

O App Engine determina que uma solicitação de entrada seja destinada ao aplicativo usando o respectivo nome de domínio. Uma solicitação com o nome de domínio http://[YOUR_PROJECT_ID].appspot.com é encaminhada para o aplicativo com 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 no 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, exceto o caractere .. As solicitações enviadas a qualquer subdomínio dessa maneira são encaminhadas para o aplicativo.

Você pode configurar um domínio personalizado de nível mais alto usando o G Suite e, em seguida, atribuir subdomínios a vários aplicativos, como o Google Mail ou o Google Sites. Também é possível associar um aplicativo do App Engine a um subdomínio. Para mais informações sobre como mapear um domínio personalizado para o 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 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 Como encaminhar por URL para mais informações e exemplos.

O nome de domínio usado para a solicitação está incluído nos dados dela, que são passados para o aplicativo. Portanto, você pode 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, se você quiser redirecionar para um domínio oficial, poderá codificar o aplicativo para verificar o cabeçalho Host da solicitação e, em seguida, responder de acordo com o nome de domínio.

Como encaminhar 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 aplicativo, se houver. As substrings [VERSION_ID],[SERVICE_ID]e[MY_PROJECT_ID]do URL representam os códigos dos recursos do aplicativo.

Dica: você pode usar as ferramentas a seguir para recuperar os códigos dos recursos do seu 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 listar os códigos dos recursos em um determinado projeto do GCP.

API

Para recuperar os códigos dos recursos de maneira programática, consulte os métodos list na API Admin.

Encaminhamento padrão

Os padrões de URL a seguir têm um comportamento de encaminhamento padrão. Observe que o encaminhamento 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 temporariamente.

  • Envia uma solicitação para uma instância disponível de uma instância 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 serviço default.

Encaminhamento temporário

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 encaminhamento temporário não se aplica a domínios personalizados. As solicitações feitas para eles retornarão um código de status HTTP 404 se o nome do host for inválido.

Encaminhamento 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 que você definiu 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 um serviço 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. Você pode ver 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 de exemplo 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, você pode usar os padrões de URL a seguir:

  1. Para definir como destino a versão no serviço default por meio de HTTPS, você pode usar:

    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, você pode usar:

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

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

Como encaminhar com um arquivo de expedição

Para URLs que usam os padrões descritos anteriormente, você pode criar um arquivo de expedição para modificar as regras de encaminhamento do App Engine e definir suas próprias regras personalizadas. Com um arquivo de expedição, é possível 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 ver detalhes sobre como criar um arquivo de expedição, consulte a referência de 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, é possível 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 trabalhador, 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 ver detalhes sobre como definir o arquivo dispatch.yaml, 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 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 Go