Utilización de hosts virtuales

Puede utilizar hosts virtuales si desea aislamiento entre las aplicaciones y los puntos finales que sirven.

A menudo, un solo servidor de aplicaciones responde a solicitudes de varias configuraciones de puerto y host distintas. Esto se produce por una combinación de motivos como, por ejemplo, se está ejecutando en una máquina con varias interfaces de red con nombres distintos o se direcciona desde un servidor http, proxy o equilibrador de carga. En estos casos, es posible que desee controlar con qué aplicación se puede contactar desde un host específico. Los hosts virtuales proporcionan la prestación. Coincide con el nombre de host y el número de puerto solicitado (tal como se determina en la cabecera de host HTTP) según la lista configurada de alias de host.

En WebSphere Application Server Liberty, es suficiente la configuración predeterminada. El host virtual predeterminado (default_host) coincide con las solicitudes de cualquier combinación de host y puerto entrante y las envía en el contenedor de aplicación predeterminado.

La lista siguiente ilustra los elementos de configuración de claves cuando se configuran hosts virtuales.
  • El valor del ID del elemento de configuración virtualHost.
  • La configuración del subelemento hostAlias.
  • La configuración del subelemento allowFromEndpoint (si se utiliza).
  • La configuración del host virtual en el archivo ibm-web-bnd.xml o ibm-web-bnd.xmi del WAR.
  • El valor de atributo de host del httpEndpoint.
  • El valor del atributo de ID del httpEndpoint.

Aislamiento de dos aplicaciones entre sí

El ejemplo siguiente ilustra uno de los usos más comunes del alojamiento virtual para que se pueda comprender parte de la configuración que es necesaria. Este ejemplo muestra cómo configurar dos aplicaciones que se ejecutan en distintos puertos. Más adelante en este ejemplo, se ilustra que está disponible una aplicación en la interfaz localhost.
<httpEndpoint id="defaultHttpEndpoint" host="*" httpPort="9080" />
<httpEndpoint id="alternateEndpoint" host="*" httpPort="9081" />

<virtualHost id="application-1">
    <hostAlias>your_host_name:9080</hostAlias>
</virtualHost>

<virtualHost id="application-2">
    <hostAlias>localhost:9081</hostAlias>
</virtualHost>

<enterpriseApplication location="myApp.ear" name="App1"/>
<webApplication location="myApp2.war" name="App2" />

El defaultHttpEndpoint expone todas las interfaces en el puerto 9080 y el alternateEndpoint expone todas las interfaces en el puerto 9081.

Si una App1 tiene un archivo WAR con un archivo ibm-web-bnd.xml que especifica <virtual-host name="application-1"/>, solo se puede acceder a esta aplicación en su_nombre_host:9080/raíz_contexto_app1.

Si la App2 (que es un WAR) tiene un archivo ibm-web-bnd.xml que especifica <virtual-host name="application-2"/>, solo se puede acceder a esta aplicación en localhost:9081/raíz_contexto_app2.

Si se ha desplegado una tercera aplicación que no ha especificado ningún host virtual específico, en la configuración, solo se podría acceder a dicha aplicación si se realizara una solicitud con proxy que tuviera la cabecera HOST que especifica un puerto diferente. Por ejemplo, si se ha realizado la solicitud a un proxy en el puerto 80, dicho puerto no aparece listado en ninguna de las especificaciones de hostAlias y la solicitud se direccionaría al host virtual default_host.

Aislamiento de aplicaciones basándose en el host o el puerto solicitado

El host virtual predeterminado en Liberty también se utiliza para comunicaciones JMX. Si desea aislar las comunicaciones JMX del tráfico de aplicaciones, tendrá que completar los pasos siguientes.
  1. Decida el nombre del host virtual, y actualice la aplicación para hacer referencia al nuevo host (no predeterminado). Añada un elemento de host virtual al archivo ibm-web-bnd.xml o ibm-web-bnd.xmi del WAR.
    <?xml version="1.0" encoding="UTF-8"?>
    <web-bnd
        xmlns="http://websphere.ibm.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://websphere.ibm.com/xmk/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-web-bnd_1_0.xsd"
        version="1.0" />
    
        <virtual-host name="proxiedRequests" />
    
    </web-bnd>
  2. Añada un elemento virtualHost al archivo server.xml. El nombre debe coincidir con lo que se ha especificado en la aplicación y debe definir los hostAliases que se direccionan al nuevo host virtual.
    Nota: El nombre de host y el puerto que se está cotejando es el que ha sido solicitado originalmente por el usuario, que podría coincidir o no con el host y el puerto que está utilizando Liberty. El ejemplo siguiente ilustra un elemento de host virtual añadido al archivo server.xml.
    <virtualHost id="proxiedRequests">
        <hostAlias>external.host.name:80</hostAlias>
        <hostAlias>external.host.name:443</hostAlias>
    </virtualHost>

    Si las solicitudes proceden de un proxy, esta configuración sola direcciona cualquier solicitud que se realiza en el host y el puerto del proxy al host virtual "proxiedRequests".

Restricción del acceso basándose en el punto final de origen

Si desea restringir el acceso a las aplicaciones predeterminadas/del sistema que utilizan defaultHttpEndpoint, existen más pasos que se deben realizar.
  1. Defina otro httpEndpoint. El ejemplo siguiente ilustra otro httpEndpoint.
    <httpEndpoint id="localHostOnly" host="localhost" httpPort="9081" httpsPort="9444"/>

    Este punto final http especifica que host="localhost," lo que significa que los puertos 9081 y 9444 solo están expuestos en la interfaz localhost.

  2. Actualice las definiciones de virtualHost para especificarel atributo allowFromEndpointRef. Cuando este atributo está especificado, un virtualHost acepta solicitudes solo del punto final especificado. Por ejemplo:
    <virtualHost id="default_host" allowFromEndpointRef="localHostOnly">
        <hostAlias>*:9081</hostAlias>
        <hostAlias>*:9444</hostAlias>
    </virtualHost>
    
    </virtualHost id="proxiedRequests">
        <hostAlias>*:9080</hostAlias>
        <hostAlias>*:9443</hostAlias>
        <hostAlias>external.host.name:80</hostAlias>
        <hostAlias>external.host.name:443</hostAlias>
    </virtualHost>
    Con esta configuración:
    • El host virtual default_host ahora acepta solicitudes que se direccionan solo en localhost:9081 y localhost:9444 que también se han originado desde el punto final localHostOnly. Se rechaza cualquier otra solicitud a los puertos 9081 y 9444. Por ejemplo, una solicitud procedente defaultHttpEndpoing con cabeceras de Host que hacen referencia al localhost:9081 se rechaza.
    • El host virtual proxiedRequests ahora acepta cualquier solicitud que se haya emitido al puerto 9080, o 9443 (que son los puertos predeterminados que utiliza el defaultHttpEndpoint), además de aquellos que tienen una cabecera de Host que haga referencia al nombre de host externo procedente del proxy y el puerto 80 o 443.

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
Nombre de archivo:cwlp_virtual_hosts.html