Cómo configurar Hosts Virtuales en Apache.
El escenario en el que entran en juego los “Hosts Virtuales” o “VirtualHost“, es aquel en el que necesitamos hacer funcionar más de un sitio web (dominio) en una sola máquina. Con los Virtual Hosts conseguimos a partir de una sencilla configuración, tener un único servidor Web capaz de servir diferentes dominios tales como www.undominio.com y www.otrodominiodiferente.com.
En una instalación de Apache con un solo sitio se utiliza la directiva ServerName para indicar cúal es el dominio que se está sirviendo, sin embargo, cuando lo que pretendemos es administrar varios sitios tendremos que emplear la directiva VirtualHost.
En el siguiente ejemplo configuraremos los dominios anteriores para que el servidor Apache sea capaz de servirlos.
El primer paso para configurar nuestro “Virtual Hosting” es eliminar la directiva ServerName y substituirla por NameVirtualHost.
#ServerName www.mi_unico_dominio.com NameVirtualHost *:80 NameVirtualHost *:443 |
Posteriormente es necesario definir las respectivas secciones para cada dominio a través de la directiva VirtualHost:
<VirtualHost *:80> ServerName www.undominio.com ServerAlias www.undominio.es www.undominio.com subdomain.undominio.com DocumentRoot /var/www/carpeta RewriteEngine on <Directory /var/www/carpeta/> AllowOverride All </Directory> </VirtualHost> <VirtualHost *:80> ServerName www.otrodominiodiferente.com ServerAlias otrodominiodiferente.com www.otrodominiodiferente.es ServerAdmin soporte@otrodominiodiferente.com DocumentRoot /var/www/otracarpeta RewriteEngine on <Directory /var/www/otracarpeta/> AllowOverride All </Directory> </VirtualHost> <VirtualHost *:443> <IfModule mod_ssl.c> SSLEngine on SSLCertificateFile /etc/apache2/ssl.crt/certificado.crt SSLCertificateKeyFile /etc/apache2/ssl.key/certificado.key SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown </IfModule> ServerName www.otrodominiodiferente.com ServerAlias otrodominiodiferente.com www.otrodominiodiferente.es ServerAdmin soporte@otrodominiodiferente.com DocumentRoot /var/www/otracarpeta </VirtualHost> |
Es posible que con un distintos nombres de dominios queramos que se sirva el mismo sitio, por lo que podremos apoyarnos de la directiva ServerAlias, tal y como se muestra en los ejemplos anteriores.
Al estar configurando diferentes sitios tendremos que indicarle a Apache de alguna manera donde se encuentran los ficheros que debe servir dependiendo del dominio al que estemos accediendo. Para ello contamos con la directiva DocumentRoot que indicara donde se encuentra el directorio base de nuestros ficheros.