Antipatrón: Define varios hosts virtuales con el mismo alias de host y número de puerto

Estás viendo la documentación de Apigee Edge.
Ve a la Documentación de Apigee X.
información

En Apigee Edge, un router controla todo el tráfico entrante de la API. Eso significa que todas las solicitudes HTTP y HTTPS Las solicitudes a un proxy de la API de Edge primero se controlan con un router perimetral. Por lo tanto, la solicitud del proxy de API debe dirigirse a la dirección IP y al puerto abierto de un router.

Un host virtual te permite alojar varios nombres de dominio en un solo servidor o grupo de servidores. En Edge, los servidores corresponden a los routers perimetrales. Cuando defines hosts virtuales en un router, puedes manejar solicitudes a varios dominios.

Un host virtual en Edge define un protocolo (HTTP o HTTPS), junto con un puerto de router y un alias de host. Por lo general, el alias del host es un nombre de dominio de DNS que se asigna a la dirección IP de un router.

Por ejemplo, en la siguiente imagen, se muestra un router con dos definiciones de host virtual:

En este ejemplo, hay dos definiciones de host virtual. Uno maneja las solicitudes HTTPS en la el dominio domainName1; el otro controla las solicitudes HTTP en domainName2.

En una solicitud a un proxy de API, el router compara el encabezado del Host y el número de puerto del a la lista de alias de host definidos por todos los hosts virtuales para determinar qué un host virtual maneja la solicitud.

A continuación, se muestra la configuración de ejemplo para los hosts virtuales:

ejemplo de configuración de vhost

Antipatrón

Definir varios hosts virtuales con el mismo alias de host y número de puerto en el mismo de una organización o entre organizaciones generará confusión en el momento de enrutamiento de solicitudes a la API y pueden causar errores o comportamientos inesperados.

Usemos un ejemplo para explicar las implicaciones de tener varios hosts virtuales con el mismo alias de host.

Imagina que hay dos hosts virtuales sandbox and secure definidos con el mismo alias de host; p.ej., api.company.abc.com en un entorno:

vhosts con el mismo alias

Con la configuración anterior, podría haber dos situaciones, como se describe en las siguientes secciones.

Situación 1 : Un proxy de API está configurado para aceptar solicitudes a solo uno de los zona de pruebas del host

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

En esta situación, cuando las aplicaciones cliente realizan llamadas a un proxy de API específico usando el el alias de host api.company.abc.com, recibirá errores 404 de forma intermitente con el siguiente mensaje:

Unable to identify proxy for host: secure 

Esto se debe a que el router envía las solicitudes a sandbox y secure. los hosts virtuales. Cuando las solicitudes se enrutan al host virtual sandbox, las aplicaciones cliente recibirán una respuesta exitosa. Sin embargo, cuando las solicitudes se enrutan al host virtual secure, las aplicaciones cliente recibirán el error 404, ya que el proxy de API no está configurado para aceptar solicitudes en Host virtual de secure.

Situación 2 : Un proxy de API está configurado para aceptar solicitudes a la zona de pruebas del host virtual y a las seguras

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

En esta situación, cuando las aplicaciones cliente realizan llamadas a un proxy de API específico usando el alias de host api.company.abc.com, obtendrá una respuesta válida basada en la lógica del proxy.

Sin embargo, esto provoca que se almacenen datos incorrectos en Analytics a medida que se enrutan las solicitudes a la API. ambos hosts virtuales, mientras que las solicitudes reales estaban dirigidas a enviarse a un solo host virtual.

Esto también puede afectar la información de registro y cualquier otro dato que se base en los hosts virtuales.

Impacto

  1. Los errores 404 debido a que las solicitudes a la API se pueden enrutar a un host virtual con el cual no se puede conectar configurado para aceptar las solicitudes.
  2. Datos de Analytics incorrectos, ya que las solicitudes a la API se enrutan a todos los hosts virtuales que tienen la mismo alias de host, mientras que las solicitudes se hacían solo para un host virtual específico.

Práctica recomendada

  • No definas varios hosts virtuales con el mismo alias de host y número de puerto en el mismo entorno. o diferentes entornos de una organización.
  • Si necesitas definir varios hosts virtuales, usa alias de host diferentes en cada uno de ellos. los hosts virtuales, como se muestra a continuación:

    dos vhosts

Lecturas adicionales