La directiva <VirtualHost> es una directiva contenedora que nos permitirá configurar un host virtual, incluyendo todas las directivas que queramos aplicarle. Evidentemente, solo contendrá directivas que estén en el contexto virtual host.
Directiva <VirtualHost>
Sintaxis: <VirtualHost {dirección_IP[:puerto]}...> ... </VirtualHost>
Contexto: server config
El valor dirección_IP puede ser un asterisco (*), que se utilizará para representar a cualquier dirección IP. Las direcciones IPv6, como siempre, deben escribirse dentro de corchetes. Este valor indica la IP y el puerto por el que se servirá el sitio web que configura <VirtualHost>, en caso de llegar una petición al servidor con esos datos de IP y puerto.
<VirtualHost 192.168.1.12:80>
...
<VirtualHost>
<VirtualHost [2001:db8::c001:53ab:add1:e487]:80>
...
<VirtualHost>
<VirtualHost *:80>
...
<VirtualHost>
En el último ejemplo, se define un sitio web que se servirá cuando llegue una petición a cualquier IP del servidor por el puerto 80.
Las direcciones IP que se utilicen en <VirtualHost> no implican que Apache escuche por ellas, para que esto suceda, hay que utilizar correctamente la directiva Listen.
Como cada directiva <VirtualHost> configura un sitio web, estas se van a poner cada una en un fichero independiente con extensión .conf, lo cual nos va a permitir habilitar y deshabilitar los sitios web de forma independiente.
El fichero con la directiva <VirtualHost>, se creará en Debian en el directorio /etc/apache2/sites-available, pero para que Apache pueda mostrar el sitio web al que representa, será necesario, como ya se comentó, crear un enlace simbólico de este fichero sobre el directorio /etc/apache2/sites-enabled. Hecho esto, tras el reinicio del servicio, el sitio web ya estará habilitado y se podrá acceder. Si en un momento dado, queremos dejar inaccesible el sitio web, solo tendremos que deshabilitarlo eliminando el enlace simbólico y reiniciando el servicio.
El enlace simbólico lo podemos crear manualmente con la orden ln -s, o a través del script a2ensite. También, la eliminación del enlace simbólico, puede hacerse manualmente o usando el script a2dissite.
# a2ensite nombre-fichero-virtualhost
# a2dissite nombre-fichero-virtualhost
El valor de nombre-fichero-virtualhost no es necesario que lleve la extensión .conf.