<-
Apache > Servidor HTTP > Documentaci�n > Versi�n 2.0 > Hosting Virtual

Soporte de Hosting Virtual basado en nombres

Idiomas disponibles:  de  |  en  |  es  |  ja  |  ko 

Este documento describe c�mo y cu�ndo debe usarse hosting virtual basado en nombres.

Consulte tambi�n

top

Diferencias entre el hosting vitual basado en nombres y el basado en IPs

El hosting virtual basado en IPs usa la direcci�n IP de la conexi�n para determinar qu� host virtual es el que tiene que servir. Por lo tanto, necesitar� tener diferentes direcciones IP para cada host. Si usa hosting virtual basado en nombres, el servidor atiende al nombre de host que especifica el cliente en las cabeceras de HTTP. Usando esta t�cnica, una sola direcci�n IP puede ser compartida por muchos sitios web diferentes.

El hosting virtual basado en nombres es normalmente m�s sencillo, porque solo necesita configurar su servidor de DNS para que localice la direcci�n IP correcta y entonces configurar Apache para que reconozca los diferentes nombres de host. Usando hosting virtual basado en nombres tambi�n se reduce la demanda de direcciones IP, que empieza a ser un bien escaso. Por lo tanto, debe usar hosting virtual basado en nombres a no ser que haya alguna raz�n especial por la cual tenga que elegir usar hosting vitual basado en direcciones IP. Algunas de �stas razones pueden ser:

top

C�mo usar hosting vitual basado en nombres

Para usar hosting virtual basado en nombres, debe especificar en el servidor qu� direcci�n IP (y posiblemente qu� puerto) se va a usar para atender las peticiones a los diferentes hosts. Esto se hace con la directiva NameVirtualHost. Normalmente, cualquiera o todas las direcciones IP del servidor pueden usarse, tambi�n puede usar * como argumento para la directiva NameVirtualHost. Si va a usar m�s de un puerto (por ejemplo si va usar SSL) debe a�adir un puerto a cada argumento, por ejemplo *:80. Tenga en cuenta que especificando una direcci�n IP en la directiva NameVirtualHost no hace que el servidor escuche autom�ticamente en esa direcci�n IP. Consulte la secci�n Especificar las direcciones y puertos que usa Apache para obtener m�s informaci�n. Adem�s, cualquier direcci�n IP especificada debe asociarse con un dispositivo de red del servidor.

El siguiente paso es crear un bloque <VirtualHost> para cada host diferente que quiera alojar en el servidor. El argumento de la directiva <VirtualHost> debe ser el mismo que el argumento de la directiva NameVirtualHost (por ejemplo, una direcci�n IP, o un * para usar todas las direcciones que tenga el servidor). Dentro de cada bloque <VirtualHost>, necesitar� como m�nimo una directiva ServerName para designar qu� host se sirve y una directiva DocumentRoot para indicar d�nde est�n los contenidos a servir dentro del sistema de ficheros.

A�adir hosts vituales a un servidor web ya existente

Si est� a�adiendo hosts virtuales a un servidor web ya existente, debe crear tambi�n un bloque <VirtualHost> para el host que ya tenga funcionando. Los valores de las directivas ServerName y DocumentRoot desde este nuevo host virtual deben tener los mismos valores que los de las directivas ServerName DocumentRoot globales. Ponga este host virtual como el primero en el archivo de configuraci�n para que sea el que act�e como host por defecto.

Por ejemplo, suponga que est� sirviendo el dominio www.domain.tld y quiere a�adir el host virtual www.otherdomain.tld, que apunta a la misma direcci�n IP. Entonces, lo �nico que tiene que hacer es a�adir lo siguiente al fichero httpd.conf:

NameVirtualHost *:80

<VirtualHost *:80>
ServerName www.domain.tld
ServerAlias domain.tld *.domain.tld
DocumentRoot /www/domain
</VirtualHost>

<VirtualHost *:80>
ServerName www.otherdomain.tld
DocumentRoot /www/otherdomain
</VirtualHost>

Tambi�n puede optar por especificar una direcci�n IP expl�citamente en lugar de usar un * en las directivas NameVirtualHost y <VirtualHost>. Por ejemplo, puede hacer esto para hacer funcionar diferentes hosts virtuales basados en nombres en una direcci�n IP, o basados en IPs, o un conjunto de hosts virtuales basados en nombres en otra direcci�n.

Tambi�n puede que quiera que se acceda a un determinado sitio web usando diferentes nombres. Esto es posible con la directiva ServerAlias, puesta dentro de la secci�n <VirtualHost>. Por ejemplo, en el primer bloque <VirtualHost> de arriba, la directiva ServerAlias indica la lista de nombres que pueden usarse para acceder a un mismo sitio web:

ServerAlias domain.tld *.domain.tld

entonces las peticiones para todos los hosts en el dominio domain.tld ser�n servidas por el host virtual www.domain.tld. Los car�cteres comodines * y ? pueden usarse para encontrar equivalencias con los nombres. Por supuesto, no puede inventarse nombres y ponerlos en la directiva ServerName o ServerAlias. Primero debe tener su servidor de DNS debidamente configurado para que pueda hacer corresponder esos nombres con una direcci�n IP de su servidor.

Para terminar, puede mejorar el rendimiento de la configuraci�n de los hosts virtuales poniendo otras directivas dentro de las secciones <VirtualHost>. La mayor parte de las directivas pueden ponerse en esos containers y cambiar�n solo la configuraci�n del host virtual al que se refieran. Para ver si una directiva en particualar puede usarse as�, consulte el Contexto de la directiva. Las directivas de configuraci�n especificadas en el contexto del servidor principal (fuera de cualquier secci�n <VirtualHost>) se usan �nica y exclusivamente si sus valores no son sustituidos por alguno de los par�metros de configuraci�n del host virtual.

Cuando llega una petici�n, el servidor primero verifica si se est� usando una direcci�n IP que coincide con el valor de la directiva NameVirtualHost. Si es el caso, mirar� en cada secci�n <VirtualHost> cuya IP coincida e intentar� encontrar si el valor de la directiva ServerName o de la directiva ServerAlias coincide con el nombre del sitio web de la petici�n. Si encuentra una coincidencia, usa la configuraci�n de ese servidor. Si no la encuentra, usa el primer host virtual de la lista cuya direcci�n IP coincida con el de la petici�n.

Como consecuencia, el primer host virtual de la lista es el que se usa por defecto. La directiva DocumentRoot del servidor principal no se usar� nunca cuando una direcci�n IP coincida con el valor de la directiva NameVirtualHost. Si quiere usar una configuraci�n especial para peticiones que no coinciden con ning�n host virtual en concreto, ponga esa configuraci�n en una secci�n <VirtualHost> y p�ngala la primera en el fichero de configuraci�n.

top

Compatibilidad con navegadores antiguos

Como se dijo antes, hay algunos clientes que no env�an los datos necesarios para que funcione correctamente el hosting virtual basado en nombres. Estos clientes van a recibir siempre como respuesta a sus peticiones, p�ginas del primer host virtual que haya en la lista para esa direcci�n IP (el host virtual primario basado en nombres).

�C�mo de antiguo?

Tenga en cuenta que cuando decimos antiguo, queremos decir realmente antiguo. Es muy poco probable que encuentre uno de esos navegadores en uso todav�a. Todas las versiones actuales de cualquier navegador env�an la cabecera Host que se necesita para que el hosting virtual basado en nombres funcione.

Existe una manera de evitar este problema con la directiva ServerPath, aunque es un poco complicada:

Ejemplo de configuraci�n:

NameVirtualHost 111.22.33.44

<VirtualHost 111.22.33.44>
ServerName www.domain.tld
ServerPath /domain
DocumentRoot /web/domain
</VirtualHost>

�Qu� significa esto? Esto significa que una petici�n de cualquier URI que empiece por "/domain" ser� servida por el host virtual www.domain.tld. Esto significa que las p�ginas pueden accederse como http://www.domain.tld/domain/ por todos los clientes, aunque los clientes que env�en una cabecera Host: pueden tambi�n acceder con http://www.domain.tld/.

Para hacer que esto funcione, ponga un enlace en la p�gina de su host virtual primario a http://www.domain.tld/domain/. Entonces, en las p�ginas del host virtual, aseg�rese de que usa o enlaces relativos (por ejemplo, "file.html" o "../icons/image.gif") o enlaces que contengan el /domain/ anterior (por ejemplo, "http://www.domain.tld/domain/misc/file.html" o "/domain/misc/file.html").

Esto requiere un poco de disciplina, pero siguiendo estas reglas, puede asegurarse, casi en todos los casos, de que las p�ginas de su sitio web podr�n ser accedidas desde cualquier navegador, ya sea nuevo o antiguo.

Idiomas disponibles:  de  |  en  |  es  |  ja  |  ko