30.9. Máquinas virtuales

Las máquinas virtuales permiten poner en la red varios dominios con un único servidor web. De este modo se evitan los esfuerzos económicos y de administración derivados de contar con un servidor para cada dominio. Existen varias posibilidades para las máquinas virtuales:

30.9.1. Máquinas virtuales en función del nombre

En el caso de las máquinas virtuales en función del nombre, una sola instancia de Apache se encarga de manejar varios dominios. Aquí no es necesario configurar varias direcciones IP para un ordenador. Esta es la alternativa más sencilla y recomendable. Consulte la documentación de Apache para ver los posibles inconvenientes de la utilización de máquinas virtuales en función del nombre.

La configuración se realiza directamente en el archivo de configuración /etc/apache2/httpd.conf. Para activar las máquinas virtuales en función del nombre, es necesario introducir una directiva apropiada: NameVirtualHost *. Aquí basta con introducir * para que Apache acepte todas las solicitudes entrantes. A continuación debe configurarse cada una de las máquinas:

<VirtualHost *>
   ServerName www.example.com
   DocumentRoot /srv/www/htdocs/example.com
   ServerAdmin webmaster@example.com
   ErrorLog /var/log/apache2/www.example.com-error_log
   CustomLog /var/log/apache2/www.example.com-access_log common
</VirtualHost>
<VirtualHost *>
   ServerName www.myothercompany.com
   DocumentRoot /srv/www/htdocs/myothercompany.com
   ServerAdmin webmaster@myothercompany.com
   ErrorLog /var/log/apache2/www.myothercompany.com-error_log
   CustomLog /var/log/apache2/www.myothercompany.com-access_log common
</VirtualHost>

Para el dominio alojado originalmente por el servidor (www.example.com) debe crearse también una entrada VirtualHost. En este ejemplo el servidor aloja, además del dominio original, un dominio adicional (www.myothercompany.com).

En las directivas VirtualHost se introduce * al igual que en NameVirtualHost. Apache determina la conexión entre la solicitud y la máquina virtual mediante el campo Host en la cabecera HTTP. La solicitud es reenviada a la máquina virtual cuyo ServerName coincida con el nombre introducido en este campo.

En las directivas ErrorLog y CustomLog no es necesario que los archivos de registro contengan el nombre de dominio. Aquí es posible utilizar cualquier nombre.

Serveradmin representa la dirección de correo electrónico de un responsable con el que se puede contactar en caso de problemas. Si se producen errores, Apache incluye esta dirección en el mensaje de error que envía al cliente.

30.9.2. Máquinas virtuales en función de la dirección IP

Con este método es necesario configurar varias direcciones IP en un ordenador. Una instancia de Apache maneja varios dominios, cada uno de los cuales tiene asignada una dirección IP. El siguiente ejemplo ilustra cómo se configura Apache de forma que, además de su dirección IP original (192.168.1.10), aloje dos dominios adicionales en otras dos direcciones IP (192.168.1.20 y 192.168.1.21). Este ejemplo concreto sólo funciona en una intranet, ya que las IPs del rango 192.168.0.0 a 192.168.255.0 no son reenviadas (enrutadas) en Internet.

30.9.2.1. Configuración de alias para direcciones IP

Con el fin de que Apache pueda alojar varias direcciones IPs, el ordenador en el que se ejecuta debe aceptar solicitudes para múltiples IPs, lo que se conoce como alojamiento de múltiples direcciones IP o multi-IP hosting. Para ello es necesario en primer lugar activar el IP aliasing en el kernel. En SUSE LINUX ya está activado de manera estándar.

Una vez que el kernel esté configurado para IP aliasing, ejecute como root los comandos ifconfig y route para configurar direcciones IP adicionales en el ordenador. En el ejemplo que se presenta a continuación, el ordenador ya tiene una dirección IP propia, 192.168.1.10, que ha sido asignada al dispositivo de red eth0.

El comando ifconfig le permite ver la dirección IP utilizada por el ordenador. Puede añadir direcciones IP adicionales con el siguiente comando:

ip addr add 192.168.1.20/24 dev eth0

Todas estas direcciones IP están asignadas al mismo dispositivo físico de red (eth0).

30.9.2.2. Máquinas virtuales con IPs

Una vez que se ha configurado el IP aliasing en el sistema o el ordenador dispone de varias tarjetas de red, la configuración de Apache puede comenzar. En primer lugar se introduce un bloque VirtualHost para cada servidor virtual:

<VirtualHost 192.168.1.20>
    ServerName www.myothercompany.com
    DocumentRoot /srv/www/htdocs/myothercompany.com
    ServerAdmin webmaster@myothercompany.com
    ErrorLog /var/log/apache2/www.myothercompany.com-error_log
    CustomLog /var/log/apache2/www.myothercompany.com-access_log common
</VirtualHost>

<VirtualHost 192.168.1.21>
    ServerName www.anothercompany.com
    DocumentRoot /srv/www/htdocs/anothercompany.com
    ServerAdmin webmaster@anothercompany.com
    ErrorLog /var/log/apache2/www.anothercompany.com-error_log
    CustomLog /var/log/apache2/www.anothercompany.com-access_log common
</VirtualHost>

Aquí se introducen directivas VirtualHost sólo para los dominios adicionales, ya que el dominio original (www.example.com) se configura mediante las opciones correspondientes (DocumentRoot, etc.) fuera de los bloques VirtualHost.

30.9.3. Múltiples instancias de Apache

En los dos métodos anteriores para las máquinas virtuales, los administradores de un dominio pueden leer los datos de los demás dominios. Para separar los dominios entre sí, es posible iniciar varias instancias de Apache, cada una de las cuales utiliza sus propias opciones de configuración para user, group, etc. en el archivo de configuración.

La directiva Listen indica en el archivo de configuración qué instancia de Apache está a cargo de qué dirección IP. Continuando con el ejemplo anterior, la directiva para la primera instancia de Apache es:

Listen 192.168.1.10:80

Para las otras dos instancias:

Listen 192.168.1.20:80
Listen 192.168.1.21:80

SUSE LINUX Manual de administración 9.3