El alojamiento virtual es un método para alojar múltiples nombres de dominio (con gestión independiente para cada uno) en un único servidor (o grupo de servidores). [ 1 ] Esto permite que un servidor comparta sus recursos, como memoria y ciclos de procesador, sin necesidad de que todos los servicios utilicen el mismo nombre de host. El término alojamiento virtual se suele usar en referencia a servidores web , pero sus principios son aplicables a otros servicios de Internet .
Una aplicación muy utilizada es el alojamiento web compartido . El precio del alojamiento web compartido es inferior al de un servidor web dedicado , ya que se pueden alojar muchos clientes en un mismo servidor. También es muy común que una misma entidad desee utilizar varios nombres en la misma máquina para que estos reflejen los servicios que ofrece, en lugar de la ubicación donde se alojan dichos servicios.
Existen dos tipos principales de alojamiento virtual: basado en nombres y basado en IP. El alojamiento virtual basado en nombres utiliza el nombre de host proporcionado por el cliente. Esto ahorra direcciones IP y la carga administrativa asociada, pero el protocolo utilizado debe proporcionar el nombre de host en el momento adecuado. En particular, existen dificultades significativas al usar alojamiento virtual basado en nombres con SSL/TLS . El alojamiento virtual basado en IP utiliza una dirección IP independiente para cada nombre de host y puede realizarse con cualquier protocolo, pero requiere una dirección IP dedicada por cada nombre de dominio. El alojamiento virtual basado en puertos también es posible en principio, pero rara vez se utiliza en la práctica debido a su poca facilidad de uso.
El alojamiento virtual basado en nombres y en direcciones IP se puede combinar: un servidor puede tener varias direcciones IP y servir varios nombres en algunas o en todas ellas. Esta técnica puede ser útil al usar SSL/TLS con certificados comodín. Por ejemplo, si un operador de servidor tuviera dos certificados, uno para *.example.com y otro para *.example.net, podría servir foo.example.com y bar.example.com desde la misma dirección IP, pero necesitaría una dirección IP diferente para baz.example.net.
Basado en nombres
Los hosts virtuales basados en nombres utilizan varios nombres de host para la misma dirección IP .
Un requisito técnico para los hosts virtuales basados en nombres es un navegador web compatible con HTTP /1.1 (algo común hoy en día) que incluya el nombre de host de destino en la solicitud. Esto permite que un servidor que aloja varios sitios web detrás de una misma dirección IP entregue el contenido correcto del sitio. Más concretamente, implica configurar el encabezado HTTP Host , que es obligatorio en HTTP/1.1. [ 2 ]
Por ejemplo, un servidor podría recibir solicitudes para dos dominios, www.example.com y www.example.net , ambos con la misma dirección IP. Para www.example.com , el servidor enviaría el archivo HTML desde el directorio /var/www/user/Joe/site/ , mientras que las solicitudes para www.example.net harían que el servidor sirviera páginas desde /var/www/user/Mary/site/ . De igual forma, dos subdominios del mismo dominio pueden alojarse juntos. Por ejemplo, un servidor de blogs podría alojar blog1.example.com y blog2.example.com.
El principal problema del alojamiento virtual basado en nombres es la dificultad para alojar varios sitios web seguros que utilizan SSL/TLS . Dado que el protocolo de enlace SSL/TLS se realiza antes de que se envíe el nombre de host esperado al servidor, este no sabe qué certificado presentar. Es posible que un solo certificado cubra varios nombres, ya sea mediante el campo "subjectaltname" o mediante comodines, pero la aplicación práctica de este enfoque está limitada por consideraciones administrativas y por las reglas de coincidencia de los comodines. Existe una extensión de TLS llamada Indicación de Nombre de Servidor (SNI) , que presenta el nombre al inicio del protocolo de enlace para solucionar este problema, excepto para algunos clientes antiguos (en particular, Internet Explorer en Windows XP o versiones antiguas de Android ) que no implementan SNI .
Además, si el Sistema de Nombres de Dominio (DNS) no funciona correctamente, resulta difícil acceder a un sitio web virtualmente alojado, incluso si se conoce la dirección IP. Si el usuario intenta contactar con el sistema mediante la dirección IP, como en http://10.23.45.67/ , el navegador web enviará la dirección IP como nombre de host. Dado que el servidor web depende de que el navegador le indique qué nombre de servidor (vhost) utilizar, responderá con un sitio web predeterminado, que a menudo no es el que el usuario espera.
Una solución alternativa consiste en añadir la dirección IP y el nombre de host al archivo hosts del sistema cliente . El acceso al servidor mediante el nombre de dominio debería volver a funcionar. Sin embargo, los usuarios deben tener cuidado al realizar esta operación, ya que cualquier cambio en la correspondencia entre el nombre de host y la dirección IP se verá anulado por la configuración local. Esta solución no resulta muy útil para un usuario web promedio, pero podría ser de utilidad para un administrador de sitio al corregir los registros DNS.
Basado en IP
Cuando se utiliza el alojamiento virtual basado en IP, cada sitio (ya sea un nombre de host DNS o un grupo de nombres de host DNS que funcionan de la misma manera) apunta a una dirección IP única. El servidor web se configura con múltiples interfaces de red físicas, interfaces de red virtuales en la misma interfaz física o múltiples direcciones IP en una sola interfaz . El servidor web puede abrir sockets de escucha independientes para cada dirección IP, o bien escuchar en todas las interfaces con un único socket y obtener la dirección IP en la que se recibió la conexión TCP después de aceptar las conexiones. De cualquier manera, puede usar la dirección IP para determinar qué sitio web servir. El cliente no interviene en este proceso y, por lo tanto (a diferencia del alojamiento virtual basado en nombres), no existen problemas de compatibilidad.
La desventaja de este enfoque es que el servidor necesita una dirección IP diferente para cada sitio web. Esto aumenta la carga administrativa (tanto la asignación de direcciones a los servidores como la justificación del uso de esas direcciones ante los registros de Internet) y contribuye al agotamiento de las direcciones IPv4 .
Usos
El alojamiento web virtual se utiliza con frecuencia a gran escala en empresas cuyo modelo de negocio consiste en ofrecer alojamiento web de bajo coste a sus clientes. La gran mayoría de los sitios web de clientes de servicios de alojamiento web en todo el mundo se alojan en servidores compartidos , utilizando tecnología de alojamiento virtual.
Muchas empresas utilizan servidores virtuales para fines internos, cuando existe una razón tecnológica o administrativa para operar varios sitios web independientes, como una extranet para clientes, una extranet para empleados , una intranet interna e intranets para diferentes departamentos. Si no existen problemas de seguridad en la arquitectura de los sitios web, estos pueden integrarse en un único servidor mediante tecnología de alojamiento virtual, lo que reduce los costos de gestión y administración , así como la cantidad de servidores independientes necesarios para dar soporte al negocio.
Véase también
Referencias
- ↑ "¿Cuántos sitios activos hay?" . Netcraft . Archivado del original el 30 de abril de 2013 . Recuperado el 14 de julio de 2018 .
Alrededor de 1996-1997, el número de direcciones IP distintas habría sido una buena aproximación al número de sitios reales, ya que las empresas de alojamiento normalmente asignaban una dirección IP a cada sitio con contenido distinto, y varios nombres de dominio podían apuntar a la dirección IP que se utilizaba para servir el mismo contenido del sitio. Sin embargo, con la adopción del alojamiento virtual HTTP/1.1 y la disponibilidad de la tecnología de equilibrio de carga, es posible alojar de forma fiable un gran número de sitios activos en una sola (o relativamente pocas) direcciones IP.
- ↑ Fielding, Roy T.; Reschke, Julian (junio de 2014). Fielding, R.; Reschke, J. (eds.). "Protocolo de transferencia de hipertexto (HTTP/1.1): Sintaxis de mensajes y enrutamiento" . IETF . doi : 10.17487/RFC7230 . Consultado el 24 de julio de 2014 .
{{cite journal}}: Para citar una revista se requiere|journal=( ayuda )
Enlaces externos
- Documentación de Apache Virtual Host
- ¿Qué puertos se consideran inseguros en Chrome?
- Alojamiento web de Apaches
- Alojamiento web