Configura hosts virtuales para la nube privada

Estás viendo la documentación de Apigee Edge.
Ir a la documentación de Apigee X.
info

En una instalación local, tienes control total sobre los hosts virtuales. Puedes crear hosts virtuales para cualquier organización, en cualquier entorno, con TLS o sin él.

En este documento, se describe cómo crear un host virtual simple. Es decir, uno que no admite TLS. Para obtener más ejemplos, incluidos los ejemplos sobre cómo crear hosts virtuales que admiten TLS, consulta Configura el acceso TLS a una API para la nube privada.

Más información:

Acerca de los alias de host

Cuando creas el host virtual, debes especificar su alias. Por lo general, este es el nombre de DNS del host virtual.

El router de Edge compara el Host encabezado de la solicitud entrante con la lista de alias de host disponibles como parte de la determinación del proxy de API que controla la solicitud. Cuando realices una solicitud a través de un host virtual, especifica un nombre de dominio que coincida con el alias de host de un host virtual o especifica la dirección IP del router y el encabezado Host que contiene el alias de host.

Por ejemplo, si creaste un host virtual con un alias de host de myapis.apigee.net en el puerto 9001, una solicitud cURL a una API a través de ese host virtual podría usar una de las siguientes formas:

  • Si tienes una entrada de DNS para myapis.apigee.net:

    curl http://myapis.apigee.net:9001/proxy-base-path/resource-path
  • Si no tienes una entrada de DNS para myapis.apigee.net:

    curl http://routerIP:9001/proxy-base-path/resource-path -H 'host:myapis.apigee.net'

    En este formulario, especificas la dirección IP del router y pasas el alias de host en el Host encabezado.

    curl http://routerIP:9001/proxy-base-path/resource-path

Opciones cuando no tienes una entrada de DNS para el host virtual

Una opción cuando no tienes una entrada de DNS es establecer el alias de host en la dirección IP del router y el puerto del host virtual, como routerIP:port. Por ejemplo:

192.168.1.31:9001

Cuando ejecutas un comando curl en el siguiente formulario:

curl http://routerIP:9001/proxy-base-path/resource-path

Se prefiere esta opción porque funciona bien con la IU de Edge.

Si tienes varios routers, agrega un alias de host para cada uno, especificando la dirección IP de cada router y el puerto del host virtual.

Como alternativa, puedes establecer el alias de host en un valor, como temp.hostalias.com. Luego, debes pasar el Host encabezado en cada solicitud:

curl -v http://routerIP:9001/proxy-base-path/resource-path -H 'Host: temp.hostalias.com'

O bien, agrega el alias de host a tu archivo /etc/hosts. Por ejemplo, agrega esta línea a /etc/hosts:

192.168.1.31 temp.hostalias.com

Luego, puedes realizar una solicitud como si tuvieras una entrada de DNS:

curl -v http://myapis.apigee.net:9001/proxy-base-path/resource-path

Acerca de los puertos de host virtuales en Edge para la nube privada 4.16.01 y versiones posteriores

Cuando creas un host virtual, especificas el puerto del router que usa el host virtual. Por ejemplo, el puerto 9001.

Para las versiones 4.16.01 y posteriores de Apigee para la nube privada, de forma predeterminada, el router se ejecuta como el usuario "apigee", que no tiene acceso a puertos con privilegios, por lo general, los puertos 1024 y versiones anteriores. Si deseas crear un host virtual que vincule el router a un puerto protegido, debes configurar el router para que se ejecute como un usuario con acceso a esos puertos. Consulta Configura un host virtual para obtener más información.

Crea hosts virtuales

En esta sección, se describe cómo crear hosts virtuales para Apigee Edge para la nube privada. Ten en cuenta que, para crear un host virtual nuevo , debes ser administrador de la organización.

Puedes crear hosts virtuales para Apigee Edge para la nube privada con la API o la IU de Edge. Estos se describen en las siguientes secciones.

Crea un host virtual con un navegador

En esta sección, se describe cómo crear un host virtual con un navegador (solo en la IU de Edge).

Para crear un host virtual nuevo en la IU de Edge, haz lo siguiente:

  1. Accede a la IU de administración de Edge.
  2. Selecciona Administrador > Hosts virtuales.
  3. Selecciona el entorno de la lista desplegable.

    Edge muestra una lista de hosts virtuales para ese entorno.

  4. Para crear un host virtual nuevo, selecciona + Host virtual.

    Edge muestra el formulario Crear host virtual.

    También puedes hacer clic en el nombre de un host virtual existente para editarlo.

  5. Define tu nuevo host virtual. Ten en cuenta que el campo URL base debe incluir el protocolo (es decir, anteponer el valor del campo con "http://" o "https://").

    Además, ten en cuenta lo siguiente:

    • No hay límite para la cantidad de hosts virtuales que puedes crear.
    • TLS es opcional y puede ser la versión 1.0, 1.1 o 1.2.
    • El puerto del host virtual es configurable.
  6. Haz clic en el botón Crear para guardar tu nuevo host virtual.

Crea un host virtual con la API

Para crear un host virtual con la API, crea un objeto XML que defina el host virtual. Por ejemplo, el siguiente objeto XML define un host virtual que usa el protocolo HTTP:

<VirtualHost name="myVHost">
   <HostAliases>
     <HostAlias>DNS_name_or_IP:port</HostAlias>
   </HostAliases>
   <Interfaces/>
   <Port>9005</Port>
</VirtualHost>

Ten en cuenta que el host virtual contiene una propiedad name. Usas el valor de la name propiedad para configurar un proxy de API para que use el host virtual.

Luego, puedes acceder a un proxy de API a través de este host virtual si realizas una solicitud a:

http://routerIP:port/proxy-base-path/resource-path
https://routerIP:port/proxy-base-path/resource-path

Donde:

  • http o https: Si el host virtual está configurado para admitir TLS, usa HTTPS. Si el host virtual no admite TLS, usa HTTP.
  • routerIP:port es la dirección IP y el número de puerto del host virtual.
  • proxy-base-path y resource-path se definen cuando creas el proxy de API.

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

http://api.myCompany.com/proxy-base-path/resource-path
https://api.myCompany.com/proxy-base-path/resource-path

Si defines la entrada de DNS, debes crear un alias de host para el host virtual que coincida con el nombre de dominio de la entrada de DNS. El alias de host debe coincidir con la cadena que el cliente pasa en el Host encabezado. En el ejemplo anterior, especificarías un alias de host de api.myCompany.com.

<VirtualHost name="myVHost">
    <HostAliases>
        <HostAlias>api.myCompany.com</HostAlias>
    </HostAliases>
    <Interfaces/>
    <Port>9005</Port>
</VirtualHost>

Para crear un host virtual que use el protocolo HTTP, haz lo siguiente:

  1. Crea el host virtual con la API de Create a Virtual Host, en la que ms-IP es la dirección IP o el nombre de dominio del nodo del servidor de administración:
    $ curl -X POST -H "Content-Type:application/xml" \
    http://ms-IP:8080/v1/o/org_name/environments/env_name/virtualhosts \
    -d '<VirtualHost name="newVHost">
        <HostAliases>
          <HostAlias>api.myCompany.com</HostAlias>
        </HostAliases>
        <Interfaces/>
        <Port>9005</Port>
      </VirtualHost>' \
    -u sysAdminEmail:password
  2. Crea el registro DNS para el host virtual que coincida con el alias de host.
  3. Si tienes proxies de API existentes, agrega el host virtual al elemento <HTTPConnection> en el extremo del proxy. El host virtual se agrega automáticamente a todos los proxies de API nuevos. Consulta Configura un proxy de API para usar un host virtual.

Modifica un host virtual

Para modificar un host virtual, haz lo siguiente:

  1. Actualiza el host virtual con la API de Update a Virtual Host, en la que <ms-IP> es la dirección IP o el nombre de dominio del nodo del servidor de administración. Debes especificar la definición completa del host virtual en el cuerpo de la solicitud, no solo los elementos que deseas cambiar. En este ejemplo, cambias el número de puerto del host virtual de 9008 a 9009:

    curl -X PUT -H "Content-Type:application/xml" \
      http://ms-IP:8080/v1/o/org_name/environments/env_name/virtualhosts/vhost_name \
      -d '<VirtualHost name="newVHost">
        <HostAliases>
          <HostAlias>api.myCompany.com</HostAlias>
        </HostAliases>
        <Interfaces/>
        <Port>9009</Port>
      </VirtualHost>' \
      -u email:password
  2. Solo para las versiones 4.16.01 y 4.16.05 de Edge para la nube privada, si modificas un host virtual existente y habilitas o inhabilitas TLS sin cambiar el número de puerto, haz lo siguiente:
    1. Detén el router:

      /opt/apigee/apigee-service/bin/apigee-service edge-router stop
    2. Borra todos los archivos en /opt/nginx/conf.d:

      rm -f /opt/nginx/conf.d/*
    3. Inicia el router:

      /opt/apigee/apigee-service/bin/apigee-service edge-router start
    4. Repítelo con todos los routers.