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 |