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>