Estás viendo la documentación de Apigee Edge.
Ir a la
documentación de Apigee X. info
En Apigee Edge, un Router controla todo el tráfico de API entrante. Eso significa que todas las solicitudes HTTP y HTTPS a un proxy de API de Edge se controlan primero con un Router de Edge. Por lo tanto, la solicitud de proxy de API debe dirigirse a la dirección IP y al puerto abierto en un Router.
Un host virtual te permite alojar varios nombres de dominio en un solo servidor o grupo de servidores. En el caso de Edge, los servidores corresponden a los Routers de Edge. Si defines hosts virtuales en un Router, puedes controlar las 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 de host es un nombre de dominio 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. Una controla las solicitudes HTTPS en el dominio domainName1 y la otra controla las solicitudes HTTP en domainName2.
En una solicitud a un proxy de API, el Router compara el encabezado Host y el número de puerto de la solicitud entrante con la lista de alias de host definidos por todos los hosts virtuales para determinar qué host virtual controla la solicitud.
A continuación, se muestra una configuración de ejemplo para hosts virtuales:
Antipatrón
Definir varios hosts virtuales con el mismo alias de host y número de puerto en los mismos entornos o en entornos diferentes de una organización, o en varias organizaciones, generará confusión al momento de enrutar las solicitudes de API y puede causar errores o comportamientos inesperados.
Usemos un ejemplo para explicar las implicaciones de tener varios hosts virtuales con el mismo alias de host.
Supongamos que hay dos hosts virtuales sandbox and secure definidos
con el mismo alias de host, es decir, api.company.abc.com en un entorno:
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 hosts virtuales sandbox
<ProxyEndpoint name="default">
...
<HTTPProxyConnection>
<BasePath>/demo</BasePath>
<VirtualHost>sandbox</VirtualHost>
</HTTPProxyConnection>
...
</ProxyEndpoint>En esta situación, cuando las aplicaciones cliente realicen llamadas a un proxy de API específico con el
alias de host api.company.abc.com, recibirán 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 los hosts virtuales sandbox y secure. Cuando las solicitudes se enrutan al host virtual sandbox, las aplicaciones cliente
recibirán una respuesta correcta. Sin embargo, cuando las solicitudes se enrutan al host virtual secure,
las aplicaciones cliente recibirán un error 404, ya que el proxy de API no está configurado para aceptar solicitudes en
el host virtual secure.
Situación 2 : Un proxy de API está configurado para aceptar solicitudes a los hosts virtuales sandbox y secure
<ProxyEndpoint name="default">
...
<HTTPProxyConnection>
<BasePath>/demo</BasePath>
<VirtualHost>sandbox</VirtualHost>
<VirtualHost>secure</VirtualHost>
</HTTPProxyConnection>
...
</ProxyEndpoint>En esta situación, cuando las aplicaciones cliente realicen llamadas a un proxy de API específico con el
alias de host api.company.abc.com, recibirán una respuesta válida según la lógica del proxy.
Sin embargo, esto hace que se almacenen datos incorrectos en Analytics, ya que las solicitudes de API se enrutan a ambos hosts virtuales, mientras que las solicitudes reales estaban destinadas 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
- Errores 404, ya que las solicitudes de API pueden enrutarse a un host virtual al que el proxy de API no esté configurado para aceptar las solicitudes.
- Datos incorrectos de Analytics, ya que las solicitudes de API se enrutan a todos los hosts virtuales que tienen el mismo alias de host, mientras que las solicitudes se realizaron 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 en entornos diferentes de una organización.
Si es necesario definir varios hosts virtuales, usa alias de host diferentes en cada uno de los hosts virtuales, como se muestra a continuación:
