Configura un host virtual

Edge para la nube privada v. 4.17.01

Un host virtual en Edge define los dominios y los puertos del router perimetral en los que se expone un proxy de API y, por extensión, la URL que usan las apps para acceder a un proxy de API. Un host virtual también define si se accede al proxy de API a través del protocolo HTTP o el protocolo HTTPS encriptado.

Como parte del proceso de integración de Edge, debes crear una organización, un entorno y un host virtual. Edge proporciona el comando setup-org para facilitar este proceso a los usuarios nuevos.

Cuando creas el host virtual, debes especificar la siguiente información:

  • El nombre del host virtual que usas para hacer referencia a él en tus proxies de API.
  • Es el puerto del router para el host virtual. Por lo general, estos puertos comienzan en 9001 y se incrementan en uno por cada host virtual nuevo.
  • El alias de host 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 del 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 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:

    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, debes especificar la dirección IP del router y pasar el encabezado del host en el alias del host.

    Nota: El comando curl, la mayoría de los navegadores y muchas otras utilidades agregan automáticamente el encabezado Host con el dominio como parte de la solicitud para que puedas usar un comando curl en el formato:


    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

Luego, ejecuta 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 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}

Usa un puerto protegido en un host virtual

Si deseas crear un host virtual que vincule el router a un puerto protegido, como números de puerto inferiores a 1024, debes configurar el router para que se ejecute como un usuario con acceso a esos puertos. De forma predeterminada, el router se ejecuta como el usuario “apigee”, que no tiene acceso a puertos con privilegios.

Para ejecutar el router como un usuario diferente, sigue estos pasos:

  1. Como raíz, crea el archivo /opt/apigee/etc/edge-router.d/RUN_USER.sh.
  2. Agrega la siguiente entrada al archivo:
    RUN_USER=root
    Si no deseas ejecutar el router como raíz, especifica un usuario con acceso al puerto.
  3. Guarda el archivo.
  4. Si especificaste un usuario que no sea raíz, cambia el propietario del archivo a ese usuario:
    > chown USER:USER /opt/apigee/etc/edge-router.d/RUN_USER.sh
  5. Reinicia el router:
    > /opt/apigee/apigee-service/bin/apigee-service perimetral-router reinicial