Antipadrão: definir vários hosts virtuais com o mesmo alias de host e número de porta

Esta é a documentação do Apigee Edge.
Acesse Documentação da Apigee X.
informações

Na Apigee Edge, um roteador processa todo o tráfego de entrada da API. Ou seja, todos os protocolos HTTP e HTTPS Primeiro, as solicitações para um proxy da API Edge são gerenciadas por um Edge Router. Portanto, a solicitação do proxy de API precisa ser direcionado para o endereço IP e abrir a porta em um roteador.

Com um host virtual, é possível hospedar vários nomes de domínio em apenas um servidor ou um grupo de servidores. Para o Edge, os servidores correspondem aos Edge Routers. Ao definir hosts virtuais em um roteador, é possível lidar com solicitações para vários domínios.

Um host virtual no Edge define um protocolo (HTTP ou HTTPS), com uma porta do roteador e um alias de host. O alias do host normalmente é um nome de domínio DNS que é mapeado para o endereço IP de um roteador.

Por exemplo, a imagem a seguir mostra um roteador com duas definições de host virtual:

Neste exemplo, há duas definições de host virtual. Um lida com solicitações HTTPS domínio domainName1, o outro processa solicitações HTTP no domainName2.

Em uma solicitação para um proxy de API, o roteador compara o cabeçalho Host e o número da porta do proxy solicitação para a lista de aliases de host definidos por todos os hosts virtuais para determinar quais e o host virtual processa a solicitação.

Confira abaixo exemplos de configuração para hosts virtuais:

exemplo de configuração do vhost

Antipadrão

Definir vários hosts virtuais com o mesmo alias de host e número de porta no mesmo domínio de uma organização ou entre organizações vão causar confusão no momento de roteamento de solicitações de API e causar erros/comportamentos inesperados.

Vamos usar um exemplo para explicar as implicações de ter vários hosts virtuais com o mesmo alias de host.

Considere que há dois hosts virtuais sandbox and secure definidos com o mesmo alias de host, ou seja, api.company.abc.com em um ambiente:

vhosts com o mesmo alias

Com a configuração acima, pode haver dois cenários, conforme descrito nas seções a seguir.

Cenário 1 : um proxy de API está configurado para aceitar solicitações para apenas um dos sandbox de hosts

<ProxyEndpoint name="default">
  ...
  <HTTPProxyConnection>
    <BasePath>/demo</BasePath>
    <VirtualHost>sandbox</VirtualHost>
  </HTTPProxyConnection>
  ...
</ProxyEndpoint>

Nesse cenário, quando os aplicativos clientes fazem as chamadas para um proxy de API específico usando o alias de host api.company.abc.com, eles vão receber erros 404 intermitentemente com a mensagem:

Unable to identify proxy for host: secure 

Isso ocorre porque o roteador envia as solicitações para sandbox e secure hosts virtuais. Quando as solicitações são encaminhadas para o host virtual sandbox, os aplicativos clientes receberá uma resposta bem-sucedida. No entanto, quando as solicitações forem roteadas para o host virtual secure, os aplicativos clientes receberão o erro 404 porque o proxy da API não está configurado para aceitar solicitações no secure host virtual.

Cenário 2 : um proxy de API está configurado para aceitar solicitações para os hosts virtuais e para o sandbox

<ProxyEndpoint name="default">
  ...
  <HTTPProxyConnection>
    <BasePath>/demo</BasePath>
    <VirtualHost>sandbox</VirtualHost>
    <VirtualHost>secure</VirtualHost>
  </HTTPProxyConnection>
  ...
</ProxyEndpoint>

Nesse cenário, quando os aplicativos clientes fazem as chamadas para um proxy de API específico usando o alias de host api.company.abc.com, eles receberão uma resposta válida com base na lógica do proxy.

No entanto, isso faz com que dados incorretos sejam armazenados no Google Analytics à medida que as solicitações de API são encaminhadas para ambos os hosts virtuais, enquanto as solicitações reais eram enviadas para apenas um host virtual.

Isso também pode afetar as informações de registro e quaisquer outros dados baseados nos hosts virtuais.

Impacto

  1. Erros 404 porque as solicitações da API podem ser roteadas para um host virtual ao qual o proxy de API pode não estar configurado para aceitar as solicitações.
  2. Dados incorretos do Google Analytics, já que as solicitações da API são encaminhadas para todos os hosts virtuais com o mesmo alias de host, enquanto as solicitações foram feitas apenas para um host virtual específico.

Prática recomendada

  • Não defina vários hosts virtuais com o mesmo alias de host e número de porta no mesmo ambiente. ou ambientes diferentes de uma organização.
  • Se for necessário definir vários hosts virtuais, use aliases de host diferentes em cada um os hosts virtuais, conforme mostrado abaixo:

    dois vhosts

Leitura adicional