Hosts virtuales

Un host virtual es una entidad de configuración que permite que una única máquina de host parezca varias máquinas de host. Mantiene una lista de los 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 a sólo un host virtual. Los recursos asociados con un host virtual no pueden compartir datos con recursos asociados con otro host virtual, incluso si los hosts virtuales comparten la misma máquina física.

Cada host virtual tiene un nombre lógico y una lista de uno o más alias DNS por los que es conocido. Un alias DNS es el nombre de host TCP/IP y el número de puerto utilizado para solicitar el servlet, por ejemplo, suNombreDeHost:80. Si no se especifica un número de puerto, se establece 80.

La configuración del host virtual utiliza comodines para especificar los puertos en las entradas de host virtual.

Una solicitud de cliente de un servlet, un archivo JSP (JavaServer Pages) o un recurso relacionado contiene un alias DNS y un URI (Uniform Resource Indicator) que es exclusivo de ese recurso. Cuando se recibe una solicitud de cliente de un servlet, un archivo JSP o un recurso relacionado, el alias DNS se compara con la lista de todos los grupos de hosts virtuales para localizar el host virtual correcto, y 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 su proceso y se devuelve una respuesta al navegador. Si no se encuentra un grupo de hosts virtuales o un grupo de URI que coincida, se devuelve un error al navegador.

Un host virtual no está asociado a un nodo (máquina) en particular. Es más bien una configuración, en vez de un objeto activo, lo cual explica por qué puede crearlo, pero no iniciarlo o pararlo. Un host virtual predeterminado, denominado default_host, se configura automáticamente la primera vez que se inicia un servidor de aplicaciones. A menos que desee específicamente aislar los recursos recíprocamente en el mismo nodo (la máquina física), probablemente no necesitará hosts virtuales adicionales en el host por omisión.

Los alias DNS del 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 del transporte HTTP del servidor predeterminado. El host virtual predeterminado incluye alias comunes, tales como la dirección IP de la máquina, el nombre corto del host y el nombre del host plenamente cualificado. Uno de estos alias incluye la primera parte de la vía de acceso para acceder a un recurso tal como un servlet. Por ejemplo, el alias localhost:80 se utiliza en la solicitud http://localhost:80/myServlet.

La adición de un host local a los hosts virtuales añade el nombre de host y la dirección IP de la máquina de host local a la tabla de alias. Esto permite a un usuario remoto acceder a la consola administrativa.

Puede utilizar la consola administrativa para añadir o cambiar alias DNS si desea utilizar puertos distintos a los puertos predeterminados. Si realiza un cambio en un alias DNS, deberá regenerar la configuración del plug-in del servidor web. Puede utilizar la consola administrativa para iniciar la regeneración del plug-in.

Best practice Best practice: Puede añadir alias adicionales o cambiar los alias predeterminados si:
  • La instancia del servidor HTTP se ejecuta en un puerto distinto de 80. Añada el número de puerto correcto a cada uno de los alias. Por ejemplo, cambie su_host a su_host:8000.
  • Desea realizar solicitudes HTTPS, que utilizan SSL (Secure Sockets Layer). Para realizar solicitudes HTTPS, debe añadir el puerto 443 a cada uno de los alias. El puerto 443 es el puerto predeterminado para las solicitudes SSL.
  • La instancia del servidor web escucha las solicitudes SSL en un puerto distinto de 443. En este caso, debe añadir el número de puerto correcto a cada uno de los alias.
  • Desea utilizar un puerto distinto al puerto predeterminado (9080) del servidor de aplicaciones.
  • Desea utilizar otros alias que no aparecen en la lista.
bprac

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 es sensible a mayúsculas y minúsculas, pero el URL siguiente sí lo es. La correlación del URL debe ser exacta alfanuméricamente. Diferentes números de puertos se tratan como diferentes alias.

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 o www.Myhost.Com/Myservlet. En los últimos dos casos, estas correlaciones fallan debido a la distinción entre mayúsculas y minúsculas. La petición http://www.myhost.com/myservlet no se correlaciona correctamente con http://myhost/myservlet ni con http://myhost:9876/myservlet. Estas correlaciones fallan porque no son alfanuméricamente correctas.

Puede utilizar comodines para los alias de puerto y especificar que todas las combinaciones de nombre de host y dirección válidas de un puerto determinado se correlacionan con un host virtual determinado.

Si se solicita un recurso utilizando un alias que no puede correlacionarse con un alias de un host virtual definido, se recibirá el error 404 en el navegador que se utilizó para emitir la solicitud. Un mensaje indicará que el host virtual no ha podido ser encontrado.

Se producen dos conjuntos de asociaciones para los hosts virtuales. El despliegue de aplicaciones asocia una aplicación con 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 de puerto del servidor web del servidor de aplicaciones con el host virtual. Por ejemplo, si se observa el flujo de la solicitud de cliente web del servlet Snoop, se producen las siguientes acciones:
  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 asignado el puerto 9080 al servidor de aplicaciones autónomo server1.
  3. server1 consulta las asignaciones de host virtual para determinar el host virtual que tiene asignado el alias cualquier_host.cualquier_empresa..com:9080.
  4. El servidor de aplicaciones descubre que no existe ningún alias explícito para esa serie DNS. No obstante, existe una asignación de comodín para el nombre de host * en el puerto 9080. Esto es una coincidencia. El host virtual que define la coincidencia es default_host.
  5. El servidor de aplicaciones busca en las aplicaciones desplegadas en 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 . Puede tener tantos alias como desee para un host virtual. Puede tener incluso alias que se solapen como, por ejemplo:
Host virtual Alias Puerto
default_host * 9080
localhost 9080
my_machine 9080
my_machine.my_company.com 9080
localhost 80

El servidor de aplicaciones busca una coincidencia utilizando la dirección explícita especificada en la dirección del cliente web. No obstante, puede encontrar la coincidencia en 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 búsqueda cuando el producto busca un alias coincidente.

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 denominado admin_host. No obstante, no ha instalado la aplicación predeterminada o el servlet Snoop en admin_host.

Tabla 2. Hosts virtuales con alias solapados . 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:
Host virtual Alias Puerto
default_host * 9080
localhost 9080
admin_host * 9060
my_machine.com 9080

Supongamos que llega una solicitud de cliente web para http://my_machine.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 solicitud con my.machine.com:9080, no se puede encontrar la aplicación. Se produce un error 404 en el navegador que emite la solicitud. Un mensaje indicará que el host virtual no ha podido ser encontrado.

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, aparecerá el problema que acabamos de describir.


Icon that indicates the type of topic Concept topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=ccws_vhost
File name: ccws_vhost.html