Por knowhow en Internet y tecnología
Bien, mi amiguete y ex compañero de curro Fer se ha decidido a volver a escribir en Knowhow. Me alegro! Aquí va su post sobre configuración de hosts virtuales en Apache Tomcat:
Valencia, 24/01/2012, Fernando Gigante
La configuración de hosts virtuales medianteApache Tomcat difiere bastante de la configuración de estos hosts mediante el servidor web clásico Apache Server.
Virtualizar este servidor permite disponer de diferentes IP’s internas apuntando a diferentes carpetas o aplicaciones web del servidor evitando de esta manera utilizar subcarpetas.
Esta necesidad a mí personalmente me surgíó cuando me pidieron redireccionar un dominio a una web específica del servidor de aplicaciones Java de una empresa.
Se trata de un servidor físico en el cual a lo largo del tiempo he instalado distintos tipos de servidores software. Entre todos ellos se encuentra Apache Tomcat para servir páginas concebidas como aplicación web Java tras una migracion desde Sun Glassfish
De este modo el dominio siempre era el mismo y según a qué carpeta apuntaba cargaba una u otra página. Pero no se permite redirigir un nombre de dominio (.com .es etc) a una URL que termina apuntando a una carpeta del servidor.
Por ello lo mejor es virtualizar varios hosts dentro de una única instancia del servidor Apache Tomcat para tener todos los contenido más centralizados.
Para ello indico los pasos básicos a seguir del modo más sencillo posible:
En la siguiente ruta:
[DIRECTORIO_INSTALACION_APACHE_TOMCAT]/conf/server.xml encontramos el siguiente fragmento de XML:
<Service name=”Service1″>
<Connector URIEncoding=”iso-8859-1″ address=”192.168.30.1″ port=”80″ useIPVHosts=”true” />
<Engine name=”Catalina” defaultHost=”192.168.30.1″>
<Realm className=”org.apache.catalina.realm.UserDatabaseRealm” resourceName=”UserDatabase” />
<Host name=”192.168.30.1″ appBase=”webapps”>
<Alias>192.168.30.1</Alias>
</Host>
</Engine>
</Service>
<Service name=”Service2″>
<Connector URIEncoding=”iso-8859-1″ address=”192.168.30.2″ port=”80″ useIPVHosts=”true” />
<Engine name=”Catalina” defaultHost=”192.168.30.2″>
<Realm className=”org.apache.catalina.realm.UserDatabaseRealm” resourceName=”UserDatabase” />
<Host name=”192.168.30.2″ appBase=”webapps_vhost”>
<Alias>192.168.30.2</Alias>
</Host>
</Engine>
</Service>
Asumimos que nuestro servidor dispone de varias IPs internas. En nuestro caso tenemos la 192.168.30.1 y 192.168.30.2 para atender contenidos diferentes en cada una de ellas.
El fragmento que se muestra indica la configuración del servicio que se atiende en cada una de las IP’s
En cada configuración del servicio se debe añadir el atributo useIPVHosts=”true” y cada nombre y alias deben indicar IPs diferentes.
A su vez en la definición de los hosts aparece el atributo appBase=”webapps”. Este atributo se debe cambiar por el de la carpeta a la cual queremos apuntar mediente la correspondiente IP interna.
Por defecto existe la carpeta webapps, donde se encuentra todo un dominio de aplicaciones. En este ejemplo la estamos apuntando mediante la IP 192.168.30.1.
Esta carpeta contiene a su vez la carpeta /ROOT que puede contener diferentes contenidos a su vez en subcarpetas. También puede tener aplicaciones web comprimidas o desplegadas.
El segundo paso consiste en replicar esta carpeta por cada uno de los hosts virtuales que queramos crear, para que de este modo cada IP apunte a una carpeta webapps diferente.
En el ejemplo se indica webapps_vhost para nuestro segundo host virtual.
La carpeta es idéntica pero lo que hariamos es poner todo el contenido a mostrar por defecto a través de esa IP (véase index.HTML o index.JSP junto al resto de estructura web) en la carpeta ROOT de nuestra copia de webapps.
Después de relizar estos pequeñlos cambios se debe reiniciar el servidor y comprobar que entrando con cada una de nuestras dos IPs los resultados obtenidos son los deseados.
Un aspecto importante es el siguiente: Si a través del gestor de aplicaciones web de Tomcat hemos desplegado alguna aplicación, ésta se despliega en la carpeta por defecto, esto es, webapps.
Si deseamos hacer uso de dicha aplicación desde un subdominio diferente (véase webapps_vhost) debemos copiar la carpeta de la aplicación desplegada desde webapps a ésta.
De no ser así es probable que se produzcan errores de CROSS DOMAIN debido a lanzar solicitudes entre dominios diferentes.
Espero que esta explicación haya sido útil
Hosting recomendado

