Configura hosts virtuales para la nube privada

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

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

En este documento, se describe cómo crear un host virtual simple. Es decir, una que no sea compatible con TLS. Si quieres ver más ejemplos, incluidos ejemplos sobre la creación de hosts virtuales que admitan TLS, consulta Configura el acceso de TLS a una API para la nube privada.

Más información:

Información acerca de los alias de host

Cuando creas el host virtual, debes especificar su alias. 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 del host.

Por ejemplo, si creaste un host virtual con un alias de host de myapis.apigee.net en el puerto 9001, una solicitud de 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, haz lo siguiente:

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

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

    De esta manera, debes especificar la dirección IP del router y pasar el alias del 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

Cuando no tienes una entrada de DNS, puedes establecer el alias del host para la dirección IP del router y el puerto del host virtual, como routerIP:port. Por ejemplo:

192.168.1.31:9001

Cuando creas un comando curl con 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 router y especifica la dirección IP de cada router y el puerto del host virtual.

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

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

También puedes agregar el alias del host a tu archivo /etc/hosts. Por ejemplo, agrega la siguiente línea a /etc/hosts:

192.168.1.31 temp.hostalias.com

Luego, puedes realizar una solicitud como si tuviera una entrada DNS:

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

Información acerca de los puertos de host virtuales en Edge para la nube privada 4.16.01 y versiones posteriores

Cuando se crea un host virtual, se especifica el puerto del router que utiliza el host virtual. Por ejemplo, el puerto 9001.

Para la versión 4.16.01 y posteriores de Apigee para Cloud Private Cloud, de forma predeterminada, el router se ejecuta como el usuario “apigee” que no tiene acceso a puertos con privilegios, por lo general, a los puertos 1024 y a niveles inferiores. 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.

Crear 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 de Apigee Edge para 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 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 host virtual nuevo. Ten en cuenta que el campo URL base debe incluir el protocolo (es decir, debes anteponer el valor del campo a "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 de versiones 1.0, 1.1 o 1.2
    • El puerto del host virtual se puede configurar.
  6. Haz clic en el botón Crear para guardar tu host virtual nuevo.

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. Usa el valor de la propiedad name para configurar un proxy de API a fin de usar el host virtual.

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

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 es compatible con 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 del host debe coincidir con la string que pasa el cliente 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, realiza lo siguiente:

  1. Crea el host virtual con la API de Create a Virtual Host, en el 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 coincide con el alias del 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, sigue estos pasos:

  1. Actualiza el host virtual mediante la API de Actualiza un host virtual, en el que <ms-IP> es la dirección IP o el nombre de dominio del nodo del servidor de administración. En el cuerpo de la solicitud, debes especificar la definición completa del host virtual, no solo los elementos que deseas cambiar. En este ejemplo, debes cambiar 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 nube privada, si modificas un host virtual existente y habilitas o inhabilitas TLS sin cambiar el número de puerto, sigue estos pasos:
    1. Detén el router:

      /opt/apigee/apigee-service/bin/apigee-service edge-router stop
    2. Borra cualquier archivo de /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. Repite el procedimiento para todos los routers.