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:
Máquinas virtuales en función del nombre.
Máquinas virtuales en función de la dirección IP.
Ejecución de varias instancias de Apache en un ordenador.
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.
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.
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).
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.
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