Hosting Virtual

Apache permite la gestión de múltiples dominios (hosts) en un único servidor.

La implementación del hosting virtual se lleva a cabo utilizando dos métodos diferentes: servidores virtuales basados en IP’s y servidores virtuales basados en nombres.

Servidores virtuales por nombre

El método más sencillo y rápido (nos ahorramos todo el proceso de solicitud de direcciones IP, instalación de diferentes adaptadores de red, etc) para configurar un servidor virtual es el que utiliza nombres para su gestión, en vez de direcciones IP. El proceder es bien sencillo: a un servidor con su IP correspondiente se le asignan varios nombres de dominio (www.dominio1.com, www.dominio2.com, www.dominio3.com, etc), siendo administrados como si estuviesen en servidores diferentes.

Lo primero que se debe hacer para configurar un servidor virtual es indicar en qué dirección y puerto se está escuchando para procesar las peticiones de los clientes (en este caso la dirección y puerto de escucha del servidor). Esto se consigue con la directiva NameVirtualHost:

NameVirtualHost 192.132.80.54:80

Hay que decir que no basta con indicar la dirección y puerto de escucha para que el servidor acepte las peticiones solicitadas, sino que hay que configurarlo haciendo uso de la directiva correspondiente. (Ver el apartado sobre las directivas de configuración).

Una vez especificados los datos anteriores, el siguiente paso es utilizar la directiva contenedora <VirtualHost> (se llama contenedora porque se utilizan otras directivas en su interior: <VitualHost>otras directivas</VirtualHost>). La configuración de esta directiva es la siguiente:

<VirtualHost 192.132.80.54:80>
ServerName www.dominio.com
DocumentRoot /www/dominio
</VirtualHost>

La directiva ServerName indica el nombre del dominio que queremos administrar como servidor virtual. DocumentRoot establece el directorio desde donde se servirán los documentos pertenecientes a ese dominio. Como se puede comprobar, el método no tiene demasiada dificultad. Para configurar la directiva <VirtualHost> con otras directivas para ampliar su funcionalidad, es recomendable ver de nuevo el apartado sobre las directivas de configuración dedicadas al Hosting Virtual.

Ejemplo:

Tenemos dos dominios:

- dominio1.luismido.com: acepta las consultas al puerto 80 redirigiendolas al puerto 443 porque funciona bajo SSL.

- dominio2.luismido.com: funciona solo en el puerto 80.

La cláusula NameVirtualHost debe ir en uno solo de los archivos de configuración de los virtualhost , esto le indica a apache que se están utilizando varios hostvirtuales. En nuestro caso lo vamos a incluir en dominio1.luismido.com pero podría ir en cualquiera.

Configuración dominio1.luismido.com:

NameVirtualHost *:80
NameVirtualHost *:443

<VirtualHost *:80>
ServerName dominio1.luismido.com
DocumentRoot /var/www/dominio1.luismido.com

<Directory /var/www/dominio1.luismido.com/>
AllowOverride All
Options MultiViews Indexes SymLinksIfOwnerMatch
Allow from All
</Directory>

# Redirigir a https
RewriteEngine On
RewriteRule ^(.*)$ https://dominio1.luismido.com$1 [R,L]
</VirtualHost>

<VirtualHost *:443>
ServerName dominio1.luismido.com
DocumentRoot /var/www/dominio1.luismido.com

<Directory /var/www/dominio1.luismido.com/>
AllowOverride All
Options MultiViews Indexes SymLinksIfOwnerMatch
Allow from All
</Directory>
#Certificados
SSLEngine on
SSLCertificateFile /etc/apache2/certs/dominio1.luismido.com/dominio1.crt
SSLCertificateKeyFile /etc/apache2/certs/dominio1.luismido.com/dominio1.key
</VirtualHost>

Configuración dominio2.luismido.com:

<VirtualHost *:80>
ServerName dominio2.luismido.com
DocumentRoot /var/www/dominio2.luismido.com

<Directory /var/www/dominio2.luismido.com/>
AllowOverride All
Options MultiViews Indexes SymLinksIfOwnerMatch
Allow from All
</Directory>
</VirtualHost>

Solo queda reiniciar el apache2 y listo:

/etc/init.d/apache2 restart

Servidores virtuales por IP

El hosting virtual basado en IP’s significa que por cada nombre de dominio (por ejemplo, www.dominio.com) corresponde una dirección IP (por ejemplo, 192.132.80.54). En este último caso, el servidor deberá disponer de un adaptador de red para cada dirección IP.

Ya hemos visto cómo configurar nuestro servidor para gestionar múltiples servidores virtuales utilizando el hosting virtual por nombre. Sin embargo, hay ocasiones en las que no podamos o no deseemos utilizar este método, sino el método que utiliza direcciones IP. La siguiente lista muestra algunos de estos casos:

  • Algunos clientes antiguos no son compatibles con el hosting virtual basado en nombres. Para que el hosting virtual basado en nombres funcione, el cliente debe enviar la cabecera de Host HTTP. Esto es necesario para HTTP/1.1, y está implementado como extensión en casi todos los navegadores actuales.
  • El hosting virtual basado en nombres no se puede usar junto con SSL por la naturaleza del protocolo SSL.
  • Algunos sistemas operativos y algunos elementos de red tienen implementadas técnicas de gestión de ancho de banda que no pueden diferenciar entre hosts, a no ser que estén en diferentes direcciones IP.

La configuración de servidores virtuales por IP no se diferencia mucho del anterior método. Las directivas de configuración se utilizan de la siguiente forma:

<VirtualHost 192.132.80.54:80>
ServerAdmin moc.1oinimod|retsambew#moc.1oinimod|retsambew
DocumentRoot /groups/dominio1/www
ServerName www.dominio1.com
ErrorLog /groups/dominio1/logs/error_log
TransferLog /groups/dominio1/logs/access_log
</VirtualHost>

<VirtualHost 192.132.80.55:80>
ServerAdmin moc.2oinimod|retsambew#moc.2oinimod|retsambew
DocumentRoot /groups/dominio2/www
ServerName www.dominio2.com
ErrorLog /groups/dominio2/logs/error_log
TransferLog /groups/dominio2/logs/access_log
</VirtualHost>

En la directiva <VirtualHost> se indica la dirección IP que ha sido asignada al dominio que queremos configurar; ServerAdmin establece la dirección de e-mail del administrador; DocumentRoot el directorio desde donde se servirán los documentos pertenecientes al dominio indicado; ServerName el nombre de dominio del servidor virtual; ErrorLog el archivo de registro de errores; y, por último, TransferLog indica el archivo de registro de acceso.

Como se puede comprobar no resulta nada difícil administrar nuestros sitios web en un único servidor. La gran ventaja que esto supone es enorme.

« Apache 2

Si no se indica lo contrario, el contenido de esta página se ofrece bajo Creative Commons Attribution-ShareAlike 3.0 License