Hosts virtuales

Un host virtual es una entidad de configuración que permite que una sola máquina host parezca varias máquinas host.

Un host virtual mantiene una lista de tipos MIME (Multipurpose Internet Mail Extensions) que procesa. Puede asociar un host virtual a uno o varios módulos web, pero puede asociar cada módulo web solo con un host virtual. Los recursos asociados a un host virtual no pueden compartir datos con recursos asociados a otro host virtual, aunque los hosts virtuales compartan una máquina física.

Cada host virtual tiene un nombre lógico y una lista de uno o más alias de DNS por los que se le conoce. Un alias de DNS es el nombre de host TCP/IP y el número de puerto que se utiliza para realizar solicitudes al servlet, por ejemplo, yourHostName:80. Si no se especifica ningún número de puerto, se da por supuesto 80.

La configuración del host virtual utiliza entradas de comodín con los puertos para sus entradas de host virtual.
  • El alias predeterminado es *:80 utilizando un puerto externo que no seguro.
  • Los alias con el formato *:9080 utilizan el puerto interno que no es seguro.
  • Los alias con el formato *:9443 utilizan el puerto interno seguro.
  • Los alias con el formato *:443 utilizan el puerto externo seguro.

Una solicitud de cliente de un servlet, un archivo JavaServer Pages o un recurso relacionado contiene un alias DNS y un URI (Identificador uniforme de recursos) que es exclusivo de ese recurso. Cuando se recibe una solicitud de cliente de un servlet, un archivo JavaServer Pages o un recurso relacionado, se compara el alias DNS con la lista de todos los grupos de hosts virtuales conocidos para localizar el host virtual correcto. El URI se compara con la lista de todos los grupos de URI conocidos para localizar el grupo de URI correcto. Si se encuentran el grupo de hosts virtuales y el grupo de URI, la solicitud se envía al grupo de servidores correspondiente para procesar y se devuelve una respuesta al navegador. Si no se encuentra ningún grupo de hosts virtuales ni ningún grupo de URI que coincida, se devuelve un error al navegador.

No está asociado un host virtual a un nodo o una máquina particular. Se trata de una configuración más que de un objeto activo, esto explica por qué puede crearlo, pero no puede iniciarlo o detenerlo. Se configura automáticamente un nombre de host virtual predeterminado, llamado default_host, la primera vez que se inicia un servidor de aplicaciones. A menos que desea específicamente aislar los recursos entre sí en el mismo nodo, o la máquina física, probablemente, no necesita ningún host virtual además del host predeterminado.

Los alias de DNS para el host virtual predeterminado se configuran como *:80 y *:9080, donde el puerto 80 es el puerto del servidor HTTP y el puerto 9080 es el puerto para el transporte HTTP del servidor predeterminado. El host virtual predeterminado incluye alias comunes como, por ejemplo, la dirección IP de la máquina, el nombre abreviado del host y el nombre completo del host. Uno de estos alias incluye la primera parte de la vía para acceder a un recurso como, por ejemplo, un servlet. Por ejemplo, el alias localhost:80 se utiliza en la solicitud http://localhost:80/myServlet.

Cuando se solicita un recurso, el producto intenta correlacionar la solicitud con un alias de un host virtual definido. La parte http://host:puerto/ del host virtual no distingue entre mayúsculas y minúsculas, pero el URL que le sigue sí lo hace. La coincidencia con el URL debe ser exacta alfanuméricamente. Los números de puerto diferentes se tratan como alias diferentes.

Por ejemplo, la solicitud http://www.myhost.com/myservlet se correlaciona correctamente con http://WWW.MYHOST.COM/myservlet, pero no con http://WWW.MYHOST.COM/MYSERVLET ni Www.Myhost.Com/Myservlet. En los dos últimos casos, estas correlaciones fallan debido a las mayúsculas y minúsculas. La solicitud http://www.myhost.com/myservlet no se correlaciona correctamente con http://myhost/myservlet ni http://myhost:9876/myservlet. Estas correlaciones fallan porque no son correctas alfanuméricamente.

Puede utilizar entradas de comodín para alias de puerto y especifica que todas las combinaciones válidas de nombre de host y de dirección en un puerto concreto se correlacionan con un host virtual particular.

Si la solicitud de un recurso utilizando un alias no se puede correlacionar con un alias de un host virtual definido, recibe un error 404 en el navegador que ha utilizado para emitir la solicitud. Un mensaje indica que no se ha podido encontrar el host virtual.

Se producen dos conjuntos de asociaciones para hosts virtuales. Un despliegue de aplicación asocia una aplicación a un host virtual. Las definiciones de host virtual asocian la dirección de red de la máquina y el transporte HTTP o la asignación del puerto de servidor web del servidor de aplicaciones al host virtual. Por ejemplo, si se observa el flujo de la solicitud de cliente web para el servlet Snoop, se producen las acciones siguientes:
  1. El cliente web solicita el servlet Snoop, en la dirección web http://www.some_host.some_company.com:9080/snoop
  2. La máquina some_host tiene el puerto 9080 que está asignado al servidor de aplicaciones autónomo, server1.
  3. Server1 consulta las asignaciones de host virtual para determinar el host virtual que está asignado al alias some_host.some_company.com:9080.
  4. El servidor de aplicaciones descubre que no hay ningún alias explícito para dicha serie DNS. Sin embargo, existe una asignación de comodín para el nombre de host * en el puerto 9080, de modo que este comodín es una coincidencia. El host virtual que define la coincidencia es default_host.
  5. El servidor de aplicaciones busca en las aplicaciones que están desplegadas en el default_host y encuentra el servlet Snoop.
  6. El servidor de aplicaciones sirve la aplicación al cliente web y el solicitante puede utilizar el servlet Snoop.
Tabla 1. Alias para un host virtual
Host virtual Alias Número de puerto
default_host * 9080
default_host localhost 9080
default_host my_machine 9080
default_host my_machine.my_company.com 9080
default_host localhost 80

Puede tener tantos alias como desee para un host virtual. Puede tener incluso alias que se solapen como, por ejemplo:

El servidor de aplicaciones busca una coincidencia utilizando la dirección explícita que se ha especificado en la dirección del cliente web. Sin embargo, podría resolver la coincidencia en cualquier otro alias que coincida con el patrón antes de que coincida con la dirección explícita. La definición de un alias primero en la lista de alias no garantiza el orden de la búsqueda, cuando el producto busca un alias que coincida.

Hosts virtuales con alias que se solapan. Supongamos que define alias solapados para los dos hosts virtuales porque ha definido accidentalmente el puerto 9080 para admin_host en lugar del puerto 9060:

Se puede producir un problema si se utiliza el mismo alias para dos hosts virtuales diferentes. Por ejemplo, supongamos que ha instalado la aplicación predeterminada y el servlet Snoop en default_host. También tiene otro host virtual que se llama admin_host. No obstante, no ha instalado la aplicación predeterminada o el servlet Snoop en admin_host.

Tabla 2. Hosts virtuales con alias que se solapan.
Host virtual Alias Número de puerto
default_host * 9080
default_host localhost 9080
admin_host * 9060
admin_host my_machine.com 9080

Supongamos que llega una solicitud de cliente web para http://mi_máquina.com:9080/snoop.

Si el servidor de aplicaciones hace coincidir la solicitud con *:9080, la aplicación recibe servicio de default_host. Si el servidor de aplicaciones hace coincidir la petición con my.machine.com:9080, no se puede encontrar la aplicación. Se produce un error 404 en el navegador que emite la petición. Un mensaje indica que no se ha podido encontrar el host virtual.

Este problema es el resultado de no encontrar la aplicación solicitada en el primer host virtual que tiene un alias coincidente. La forma correcta de codificar un alias es que el nombre de alias en una solicitud entrante coincida sólo con un host virtual en todas las definiciones de host virtual. Si el URL puede coincidir con más de un host virtual, verá el problema que se ha descrito.


Icono que indica el tipo de tema Tema de concepto



Icono de indicación de fecha y hora Última actualización: Tuesday, 6 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=cwlp_virtual_hosts_ovr
Nombre de archivo:cwlp_virtual_hosts_ovr.html