Hosts virtuales

Cada host virtual de Apache representa un sitio web servido por nuestro servidor. De esta forma se permite a un sólo servidor alojar más de una web al mismo tiempo, y que parezca que todas ellas están siendo servidas por servidores diferentes a ojos de los usuarios. Así es posible aprovechar mejor los recursos del servidor, haciendo que este sirva tantas web como sus recursos permitan.

Los host virtuales se manejan de forma análoga a los módulos: cada uno tiene su propio archivo de configuración, con directivas que afectarán sólo a ese sitio web.— Estos archivos deben estar en el directorio sites-available y su nombre no puede empezar por los caracteres "." o "#". Es aconsejable que, para facilitar el manejo, el nombre de los host virtuales sea el mismo que los del dominio que representan, y que los archivos de configuración del host virtual se llamen también de esta forma.

Para activar y desactivar los hosts virtuales debemos usar los comandos a2ensite y a2dissite. Los host virtuales activos pueden verse en /etc/apache2/sites-enabled/, que al menos debe tener activo un host virtual: aunque solo tengamos una web en el servidor, Apache está configurado para tener como mínimo un virtual host (Default Virtual Host), que será el que se asigne a esa única web. Todos los host virtuales disponibles aparecen listados en el directorio /etc/apache2/sites-available, tal y como se ve en las siguientes imágenes:

Directorio sites enabled

Directorio sites available

žHay dos tipos diferentes de host virtuales:

  1. Basados en IP: donde una sola instancia del servidor tiene múltiples direcciones IP asignadas y un nombre de dominio asociado se asocia a cada una de esas IPs. Por tanto, cada web tiene una IP diferente, aunque están servidas por un único servidor.
  2. Basados en el nombre: donde el servidor tiene una única dirección IP asociada y varios nombres de dominio que se asocian con esa única dirección IP. Los diferentes sitios web se distinguen en este caso por ese nombre de host, dato que es el que usa Apache para servir las peticiones correctamente.ž El virtual hosting basado en nombre necesita pues que se pase un nombre de dominio en cada petición de la página.— El servidor ve ese nombre y sirve la página que encaje con ese nombre de dominio. Para que esto funcione, el nombre de dominio debe estar registrado con una entrada válida en el servidor DNS.

El siguiente ejemplo muestra dos dominios diferentes (ejemplo.org y ejemplo.net), que se alojaran en el mismo servidor.— Ambos hosts están usando un DocumentRoot (directorio base donde se copian los contenidos de la web), logs de acceso y de error separados.

#Virtual Host 1 – ejemplo.org

ž<VirtualHost*:80>
ServerName www.ejemplo.org
ServerAdmin admin@ejemplo.org
DocumentRoot /var/www/www.example.org
CustomLog /var/log/apache2/www.example.org-access_log

žErrorLog/var/log/apache2/www.example.org-error_log
</VirtualHost>

#Virtual Host 2 – ejemplo.net
<VirtualHost *:80>
ServerName www.ejemplo.net
ServerAdmin admin@ejemplo.net
DocumentRoot /var/www/www.example.net
CustomLog /var/log/apache2/www.example.net-access_log

ErrorLog/var/log/apache2/www.example.net-error_log
</VirtualHost>

La siguiente imagen muestra en cambio la configuración del host virtual por defecto que aparece en una instalación estándar de Apache:

Contenido de 000-default

Podemos encontrar más información en:


La siguiente actividad práctica ilustra cómo manejar hosts virtuales en Apache.
Última modificación: sábado, 31 de julio de 2010, 01:35