Saltar la navegación

Hosts virtuales por nombre

El método de virtual hosting que vamos a ver ahora es el que más se utiliza, y no necesita una IP ni un puerto para distinguir un sitio web concreto, en su lugar se utiliza el nombre del sitio web, el cual se pone en la URL y llegará al servidor en la petición del cliente como una cabecera, concretamente la cabecera Host.

Una directiva clave para implementar los hosts virtuales por nombre es ServerName, que irá dentro de <VirtualHost> y definirá el nombre del sitio web. Este nombre es el que se comparará con el valor que traiga la petición web en la cabecera Host, y en caso de coincidencia, ya se sabe el sitio que hay que servir.

Directiva ServerName

Sintaxis: ServerName nombre-url

Contexto: server config, virtual host

Para el ejemplo que estamos utilizando, nos quedaría lo siguiente:

# cat /etc/apache2/sites-available/www-asir-com.conf 
<VirtualHost *:80>
ServerName www.asir.com DocumentRoot /var/www/www-asir-com
ServerAdmin webmaster@asir.com ... ErrorLog ${APACHE_LOG_DIR}/errores-www-asir-com.log CustomLog ${APACHE_LOG_DIR}/accesos-www-asir-com.log combined </VirtualHost>
# cat /etc/apache2/sites-available/www-daw-com.conf 
<VirtualHost *:80>
ServerName www.daw.com DocumentRoot /var/www/www-daw-com
ServerAdmin webmaster@daw.com ... ErrorLog ${APACHE_LOG_DIR}/errores-www-daw-com.log
CustomLog ${APACHE_LOG_DIR}/accesos-www-daw-com.log combined
</VirtualHost>

Con la configuración anterior, el acceso al servidor puede ser por cualquiera de sus IP y el puerto 80, y la determinación del sitio web será por el nombre dado en ServerName.

Si queremos acceder a un mismo sitio web con varios nombres, es posible hacerlo utilizando la directiva ServerAlias dentro de <VirtualHost>.

Directiva ServerAlias

Sintaxis: ServerAlias nombre...

Contexto: virtual host

Es posible utilizar los caracteres comodines * e ? para referirnos a un grupo de nombres, pero no se nos puede olvidar que los DNS deben resolver todos los nombres a la IP correcta del servidor.

# cat /etc/apache2/sites-available/www-asir-com.conf 
<VirtualHost *:80>
ServerName www.asir.com ServerAlias www.asir.mdc.com sri.asir.com
ServerAlias *.asir.es
DocumentRoot /var/www/www-asir-com
ServerAdmin webmaster@asir.com ... ErrorLog ${APACHE_LOG_DIR}/errores-www-asir-com.log CustomLog ${APACHE_LOG_DIR}/accesos-www-asir-com.log combined </VirtualHost>