Acerca de los hosts virtuales

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

En Edge, un router controla todo el tráfico entrante de la API. Esto significa que un router perimetral maneja todas las solicitudes HTTP y HTTPS a un proxy de API en primer lugar.

Un host virtual te permite alojar varios nombres de dominio en un servidor. En el caso de Edge, el servidor corresponde a un Edge Router. Si defines varios hosts virtuales en un router, este puede controlar las solicitudes a la API para varios nombres de dominio.

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

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

El primer host virtual controla las solicitudes HTTPS en el dominio domainName1 y el segundo controla las solicitudes HTTP en domainName2.

En una solicitud a un proxy de API, el router compara el encabezado Host de la solicitud entrante con la lista de alias de host que definen todos los hosts virtuales para determinar qué host virtual administra la solicitud.

Acerca de las definiciones de host virtual

Los hosts virtuales contienen la siguiente información:

  • El nombre interno del host virtual. Usas ese nombre para hacer referencia al host virtual en tus proxies de API y cuando configuras el host virtual.
  • El alias de host del host virtual. Por lo general, el alias del host es el nombre de dominio de DNS que se asigna a la dirección IP en el router. El encabezado Host de las solicitudes de proxy de API debe contener el alias de host del host virtual.
  • Un puerto abierto en el router
  • Si TLS (acceso HTTPS) está habilitado o no (acceso HTTP).

Por ejemplo, cuando creas un host virtual, especificas la siguiente información:

  • name = myvhost
  • Alias de host = apis.acme.com
  • port = 443
  • TLS está habilitado

Según la configuración anterior para el host virtual, una solicitud a un proxy de API usa el siguiente formato:

https://apis.acme.com/{proxy-base-path}/{resource-path}

Donde:

  • {proxy-base-path} se define cuando creas un proxy de API y es único para cada uno. Por ejemplo:
    https://apis.acme.com/characters
  • {resource-path} es la ruta de acceso a un recurso al que se puede acceder a través del proxy de API. Por ejemplo:
    https://apis.acme.com/characters/coyote
    https://apis.acme.com/characters/roadrunner

Acerca de los hosts virtuales en Edge para la nube

Cada organización de Edge incluye automáticamente dos entornos (test y prod), dos hosts virtuales en cada entorno (predeterminado y seguro) y registros DNS para cada alias de host.

El alias de host de cada host virtual proporcionado por Apigee contiene el nombre de la organización y el entorno, como se muestra en la siguiente tabla:

Entorno Nombre del host virtual Alias de host Puerto TLS habilitada
prod predeterminado {org-name}-prod.apigee.net 80 No
seguro {org-name}-prod.apigee.net 443
prueba predeterminado {org-name}-test.apigee.net 80 No
seguro {org-name}-test.apigee.net 443

Por ejemplo, el nombre de dominio predeterminado de una organización llamada "myorg" en el entorno prod es "myorg-prod.apigee.net". Por lo tanto, para acceder a un proxy de API en esa organización, debes usar una URL con el siguiente formato:

http://myorg-prod.apigee.net/{proxy-base-path}/{resource-path}
https://myorg-prod.apigee.net/{proxy-base-path}/{resource-path}

Planes pagados de Apigee: Es posible que un nombre de dominio que contenga "apigee.net" no sea lo que deseas exponer a tus clientes. Puedes usar una entrada de DNS y un registro CNAME para asignar un nombre de dominio a tu organización en Edge. También debes crear un host virtual con el alias del host configurado para ese nombre de dominio. Esto permite que los desarrolladores accedan a tu API a través de un dominio específico de tu empresa.

Este es un ejemplo de un dominio personalizado en Edge:

https://apis.acme.com/{proxy-base-path}/{resource-path}

Acerca de los hosts virtuales en Edge para la nube privada

Cuando instalas Apigee Edge para una nube privada, no se crean organizaciones, entornos ni hosts virtuales predeterminados. Después de completar el proceso de instalación de Edge, la primera acción, por lo general, es crear una organización, un entorno y un host virtual mediante el proceso de integración.

Para integrar el servicio, ejecuta el siguiente comando en el nodo del servidor de administración de Edge:

/opt/apigee/apigee-service/bin/apigee-service apigee-provision setup-org -f configFile

donde configFile contiene la información necesaria para crear un usuario, una organización, un entorno y un host virtual.

Por ejemplo, puedes crear lo siguiente:

  • Un usuario de tu elección que funcione como administrador de la organización
  • Una organización llamada example
  • Un entorno en la organización llamado prod
  • Un host virtual en el entorno llamado default que permite el acceso HTTP en el puerto 9001
  • Un alias de host del nombre de DNS que se usa para acceder al router, o la dirección IP del router y el puerto del host virtual en el formato IP:9001.

Más adelante, puedes agregar cualquier cantidad de organizaciones, entornos y hosts virtuales a tu versión de Edge instalada de forma local. Para obtener más información, consulte:

Los hosts virtuales se abren en el router de perímetro. Por lo tanto, debes asegurarte de que el puerto que especifiques para el host virtual esté abierto en el router. Puedes usar un comando en el siguiente formato para abrir un puerto:

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 9001 -j ACCEPT --verbose

Después de ejecutar ese comando, puedes acceder a tus APIs con una URL del siguiente formato:

http://<router-ip>:9001/{proxy-base-path}/{resource-path}

Por lo general, no publicas tus APIs a los clientes con una dirección IP y un número de puerto. En su lugar, debes definir una entrada de DNS para el router y el puerto. Por ejemplo:

http://myAPI.myCo.com/{proxy-base-path}/{resource-path}

Cuando definas la entrada DNS, también deberás crear un host virtual con un alias de host que coincida con el nombre de dominio de la entrada DNS. En el ejemplo anterior, especificarías un alias de host de myAPI.myCo.com cuando crees el host virtual.

Información acerca de los alias de host y los nombres de DNS

Una propiedad que configuras para un host virtual es el alias de host. Por lo general, el alias del host es el nombre de DNS del host virtual. La forma de establecer el alias del host depende del tipo de instalación de Edge: nube o nube privada.

Alias de host y nombres de DNS en Edge para la nube

En Edge for the Cloud, cuando creas una organización de Edge por primera vez, Apigee crea automáticamente dos entornos (test y prod), dos hosts virtuales en cada entorno (predeterminado y seguro) y registros DNS para cada host virtual.

El alias de host de los hosts virtuales contiene el nombre de la organización y el entorno. Por lo tanto, una solicitud a través de un host virtual tiene el siguiente formato:

  • http://{org-name}-prod.apigee.net/{proxy-base-path}/{resource-path}
  • https://{org-name}-prod.apigee.net/{proxy-base-path}/{resource-path}
  • http://{org-name}-test.apigee.net/{proxy-base-path}/{resource-path}
  • https://{org-name}-test.apigee.net/{proxy-base-path}/{resource-path}

Por lo general, te recomendamos que crees hosts virtuales que usen tu nombre de dominio, en lugar de usar el dominio apigee.net predeterminado. Para ello, primero debes crear tu propia entrada de DNS y registro CNAME.

En la siguiente figura, se muestra una configuración típica del modo en que Edge procesa una solicitud a la API:

En este ejemplo:

  • api.acme.com es el nombre de dominio que deseas.
  • Debes definir una entrada de DNS y un registro CNAME para que api.acme.com apunte a acme-prod.apigee.net.
  • La solicitud contiene el encabezado Host que el router usa para determinar el host virtual que controla la solicitud.

En este ejemplo, especificas la siguiente información en una definición de host virtual:

  • name = myvhost
  • Alias de host = apis.acme.com
  • port = 443
  • Habilita el acceso a TLS

Si deseas obtener más información, consulta Configura hosts virtuales para Cloud.

Alias de host y nombres de DNS en Edge para la nube privada

Al igual que con Edge para la nube, creas hosts virtuales que usan tu propio nombre de dominio para el alias del host. Luego, creas tu propia entrada de DNS y registro CNAME para acceder a esos hosts virtuales.

Una de las diferencias entre la nube y la nube privada es que, en Cloud Apigee, se crearon de forma automática nombres de DNS para tus organizaciones, de la siguiente forma:

  • name=default: http://{org-name}-{env-name}.apigee.net (puerto 80 del router)
  • name=secure: https://{org-name}-{env-name}.apigee.net (puerto 443 del router)

En Edge para la nube privada, debes crear las entradas de DNS para la dirección IP y el puerto de tu router.

Por ejemplo, especificas esta información en una definición de host virtual:

  • name = myvhost
  • Alias de host = apis.acme.com
  • puerto = 9001
  • Habilita el acceso a TLS

En la siguiente imagen, se muestra una configuración típica de cómo Edge procesa una solicitud a la API:

En este ejemplo:

  • api.acme.com es el nombre de dominio que deseas.
  • Define una entrada DNS y un registro CNAME para que api.acme.com apunte a la dirección IP y el puerto del router.
  • La solicitud contiene el encabezado Host que el router usa para determinar el host virtual que controla la solicitud.

Consulta Cómo configurar hosts virtuales para la nube privada para obtener más información.

Alias de host y comodines

Puedes incluir el carácter comodín “*” en el alias de host. El carácter comodín “*” solo puede estar al comienzo (antes del primer “.”) del alias de host y no se puede mezclar con otros caracteres.

El siguiente es un ejemplo de un alias de host válido con un comodín:

*.example.com

Los siguientes ejemplos no son válidos:

  www.*.example.com
  w*.example.com

El uso de un comodín en un alias de host virtual permite que los proxies de API controlen llamadas dirigidas a varios subdominios, como alpha.example.com, beta.example.com o live.example.com. El uso de un alias de comodín también te ayuda a usar menos hosts virtuales por entorno para mantenerte dentro de los límites del producto, ya que un host virtual con un comodín cuenta como un solo host virtual.

El certificado TLS del host virtual debe tener un comodín coincidente en el nombre CN del certificado. Por ejemplo, *.example.com.

Acerca de las propiedades de hosts virtuales

En Edge, un host virtual se representa con un objeto XML. Por ejemplo, el siguiente objeto XML define un host virtual:

<VirtualHost name="vhostName">
    <HostAliases>
        <HostAlias>hostAlias</HostAlias>
    </HostAliases>
    <Interfaces>
        <!-- Private Cloud only -->
        <Interface>interfaceName</Interface>
    <Port>portNumber</Port>
    <BaseURL>http://myCo.com<</BaseUrl>
    <OCSPStapling>off</OCSPStapling>
    <RetryOptions/>
   <SSLInfo>
        <Enabled>trueFalse</Enabled>
        <ClientAuthEnabled>trueFalse</ClientAuthEnabled>
        <KeyStore>ref://keystoreRef</KeyStore>
        <KeyAlias>keyAlias</KeyAlias>
        <TrustStore>ref://truststoreRef</TrustStore>
        <IgnoreValidationErrors>trueFalse</IgnoreValidationErrors>
    </SSLInfo>
    <Properties>
        <Property name="proxy_read_timeout">timeout</Property>
        <Property name="keepalive_timeout">timeout</Property>
        <Property name="proxy_request_buffering">onOff</Property>
        <Property name="proxy_buffering">onOff</Property>
        <Property name="ssl_protocols">protocolList</Property>
        <Property name="ssl_ciphers">cipherList</Property>
    </Properties>
</VirtualHost>

La lista de propiedades que puedes establecer se basa en si usas Edge para la nube o Edge para la nube privada. Si usas Edge para la nube privada, la lista de propiedades disponibles también depende de la versión de Edge que tengas. Para obtener una descripción completa de todas las propiedades de un host virtual, consulta la referencia de propiedades de host virtual.

Para obtener más información sobre cómo crear hosts virtuales para tu versión específica de Edge, consulta los siguientes artículos: