Virtualhosts

Por defecto, apache solo nos permite alojar un dominio, cuya página web pondremos en el directorio por defecto, que en GNU/Debian es /var/www. Si queremos alojar más dominios con sus respectivas páginas web, debemos configurar algún Virtualhost. Esto permite a apache saber qué web ofrecer al cliente en función de la ip o dominio a través de la cual se accede. Configurar virtualhosts en apache2 es muy sencillo. Simplemente tenemos que poner el fichero de nuestro virtualhost, cuyo contenido veremos a continuación, dentro de /etc/apache2/sites-avaliable, y especificar en /etc/apache2/apache2.conf las direcciones ip o dominios y los puertos que utilizarán nuestors hosts virtuales:

Para los puertos 80 y 443, que son los más habituales, añadimos en /etc/apache2/apache2.conf:


NameVirtualHost *:80
NameVirtualHost *:443
	

Por su parte, el fichero de nuestro virtualhost ejemplo.jesusvillaverde.com tendrá esta apariencia:


#/etc/apache2/sites-avaliable/ejemplo.jesusvillaverde.com

 <VirtualHost *:80>
        ServerAdmin webmaster@jesusvillaverde.com
        ServerName ejemplo.jesusvillaverde.com
        DocumentRoot /var/www/ejemplo.jesusvillaverde.com
        ErrorLog /var/log/apache2/ejemplo.jesusvillaverde.com/error.log
        CustomLog /var/log/apache2/ejemplo.jesusvillaverde.com/access.log combined
</VirtualHost>
	

Podemos establecer varios virtualhost en el mismo fichero, cosa que puede ser interesante cuando una misma página puede ser accedida desde múltiples dominios y/o puertos como por ejemplo www.jesusvillaverde.com y jesusvillaverde.com. En mi caso simplemente redirigo uno hacia el otro:


<VirtualHost *:80>
        ServerAdmin webmaster@jesusvillaverde.com
        ServerName www.jesusvillaverde.com
        Redirect / http://jesusvillaverde.com/
</VirtualHost>
	

Debemos crear un virtualhost para las peticiones que no vayan dirigidas a ninguno de los virtualhost que hemos configurado explícitamente. Para ello crearemos con el virtualhost default sin especificar ServerName


<VirtualHost *:80>
        ServerAdmin webmaster@jesusvillaverde.com
        DocumentRoot /var/www/default/

        ErrorLog /var/log/apache2/error.log
        CustomLog /var/log/apache2/access.log combined
</VirtualHost>
	

Lo ideal sería poner en DocumentRoot una página que informase de la ausencia de webs alojadas en esta dirección

Para finalizar, activaremos el nuevo sitio con el comando


a2ensite ejemplo.jesusvillaverde.com
 /etc/init.d/apache2 reload