Este documento describe cómo y cuándo debe usarse hosting virtual basado en nombres.
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:
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 *
como argumento para la directiva
*:80
. Tenga en
cuenta que especificando una dirección IP en la directiva
El siguiente paso es crear un bloque *
para usar todas las direcciones
que tenga el servidor). Dentro de cada bloque
Si está añadiendo hosts virtuales a un servidor web ya
existente, debe crear también un bloque
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
:
También puede optar por especificar una dirección IP
explícitamente en lugar de usar un *
en las
directivas
También puede que quiera que se acceda a un determinado sitio
web usando diferentes nombres. Esto es posible con la directiva
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 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
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 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
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).
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
Ejemplo de configuración:
¿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.