Configura hosts virtuales para la nube privada

Estás viendo la documentación de Apigee Edge.
Consulta la documentación de Apigee X.

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

En este documento, se describe cómo crear un host virtual simple. Es decir, uno que no sea compatible con TLS. Si deseas ver más ejemplos, incluidos ejemplos sobre la creación de hosts virtuales que admiten TLS, consulta Configura el acceso de 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 el alias del host virtual. Por lo general, es el nombre de DNS del host virtual.

Edge Router compara el encabezado Host 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 uno de los siguientes formatos:

  • Si tiene una entrada DNS para myapis.apigee.net:

    curl http://myapis.apigee.net:9001/proxy-base-path/resource-path
  • Si no tiene 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 encabezado Host.

    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 crees un comando curl en el siguiente formato:

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 router y especifica la dirección IP de cada router y puerto del host virtual.

De manera alternativa, puedes establecer el alias de host en un valor, como temp.hostalias.com. Luego, debes pasar el encabezado Host 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 del host virtual en Edge para la nube privada 4.16.01 y posteriores

Cuando creas un host virtual, debes especificar 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, el router se ejecuta como el usuario “apigee” y no tiene acceso a los puertos con privilegios, por lo general, los puertos 1024 y de forma predeterminada. Si quieres crear un host virtual que vincule el router a un puerto protegido, debes configurar el router para que se ejecute como usuario con acceso a esos puertos. Consulta Cómo configurar un host virtual para obtener más información.

Crear hosts virtuales

En esta sección, se describe cómo crear hosts virtuales de 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 mediante 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 mediante un navegador (solo IU de Edge).

Para crear un host virtual nuevo en la IU de Edge, sigue estos pasos:

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

    Edge mostrará una lista de hosts virtuales para ese entorno.

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

    Edge mostrará 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, agrega el prefijo "http://" o "https://") al valor del campo.

    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 versión 1.0, 1.1 o 1.2
    • Se puede configurar el puerto del host virtual
  6. Haz clic en el botón Create 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>

Observa que el host virtual contiene una propiedad name. Usa el valor de la propiedad name a fin de configurar un proxy de API para usar el host virtual.

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

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

Aquí:

  • 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 API para 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://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 string que el cliente pasa en el encabezado Host. En el ejemplo anterior, debes especificar 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 mediante la API 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 Cómo configurar un proxy de API para usar un host virtual.

Modifica un host virtual

Para modificar un host virtual, realiza lo siguiente:

  1. Actualiza el host virtual mediante la API de Actualizar un host virtual, 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 de la nube privada 4.16.01 y 4.16.05. Si modificas un host virtual existente y habilitas TLS 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 cualquier archivo 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. Repita el proceso para todos los routers.