Un virtual host (o host virtual) es una configuración que le dice al servidor web cómo atender solicitudes para distintos dominios o subdominios que residen en una misma máquina. En otras palabras, un solo servidor puede responder a ejemplo1.com, ejemplo2.com y tienda.ejemplo3.com como si cada uno tuviera su propio equipo dedicado.
Esto es la base del hosting compartido: decenas o cientos de sitios conviven en el mismo servidor físico gracias a los virtual hosts.
Por qué existen los virtual hosts
Antes de que los virtual hosts se generalizaran, cada dominio requería su propia dirección IP y, con frecuencia, su propio servidor. Eso encarecía el alojamiento de forma significativa.
Con los virtual hosts, un administrador de sistemas puede:
- Alojar cientos de dominios en un solo servidor.
- Aislar los archivos, logs y errores de cada sitio.
- Aplicar configuraciones de seguridad o rendimiento por dominio.
- Reducir costos de infraestructura sin sacrificar flexibilidad.
Es una de las razones por las que el glosario de hosting considera los virtual hosts un concepto fundamental para cualquier desarrollador o dueño de sitio web.
Los dos tipos de virtual host en Apache
Apache HTTP Server — el servidor web más extendido en el mundo Linux — admite dos variantes principales:
1. Virtual hosts basados en nombre (Name-based)
Es el método dominante hoy en día. El servidor usa el encabezado HTTP Host: que el navegador envía en cada petición para decidir qué sitio mostrar.
Un bloque típico en Apache luce así:
<VirtualHost *:80>
ServerName ejemplo1.com
ServerAlias www.ejemplo1.com
DocumentRoot /var/www/ejemplo1
ErrorLog /var/log/apache2/ejemplo1-error.log
</VirtualHost>
Con una sola dirección IP puedes tener tantos virtual hosts como necesites. Cada dominio simplemente apunta al mismo servidor vía DNS.
2. Virtual hosts basados en IP (IP-based)
Cada dominio recibe su propia dirección IP. Apache escucha en interfaces distintas y despacha el tráfico según la IP de destino, sin necesitar el encabezado Host:.
Este método se usa cuando:
- Se necesita SSL/TLS con un certificado por IP (caso más raro hoy con SNI).
- Se quiere total aislamiento de red entre sitios.
- El cliente antiguo no envía correctamente el encabezado
Host:.
En la práctica moderna, los name-based virtual hosts con SNI (Server Name Indication) cubren casi todos los escenarios, incluido HTTPS.
Cómo Apache decide qué virtual host usar
El flujo es sencillo:
- El navegador resuelve el dominio vía DNS y obtiene la IP del servidor.
- El navegador abre una conexión TCP al servidor y envía la petición HTTP con el encabezado
Host: ejemplo1.com. - Apache recorre su lista de virtual hosts buscando una coincidencia en
ServerNameoServerAlias. - Si encuentra una coincidencia, sirve el contenido desde el
DocumentRootdefinido. - Si no encuentra ninguna, Apache responde con el primer virtual host definido (el predeterminado).
Por eso conviene definir siempre un virtual host "catch-all" al inicio de la configuración para capturar solicitudes a IPs o dominios no reconocidos.
Virtual hosts y HTTPS: el papel de SNI
Durante años, HTTPS y name-based virtual hosts no se llevaban bien: el servidor necesitaba saber el dominio antes de presentar el certificado, pero el encabezado Host: viaja cifrado.
SNI (Server Name Indication) resolvió esto. El cliente incluye el nombre del servidor en el saludo TLS, antes del intercambio de claves. Así Apache puede seleccionar el certificado correcto para cada dominio sin requerir una IP por sitio.
Todos los navegadores modernos soportan SNI, por lo que hoy es completamente viable tener múltiples virtual hosts HTTPS en una sola IP.
Diferencia entre virtual host y hosting compartido
| Concepto | Virtual host | Hosting compartido |
|---|---|---|
| Qué es | Configuración de Apache/Nginx | Servicio comercial de alojamiento |
| Nivel | Técnico (servidor) | Producto para el usuario final |
| Relación | Mecanismo interno | Usa virtual hosts internamente |
| Quién lo configura | Administrador de sistemas | Panel de control (cPanel, Plesk) |
Cuando contratas un plan de hospedaje web profesional, el proveedor crea y gestiona los virtual hosts por ti a través del panel de control.
Conclusiones clave
- Un virtual host permite que un solo servidor atienda múltiples dominios de forma independiente.
- Apache admite dos tipos: basados en nombre (los más comunes) y basados en IP.
- El encabezado HTTP
Host:es el mecanismo que Apache usa para seleccionar el virtual host correcto. - SNI hace posible HTTPS con múltiples dominios en una sola IP.
- El hosting compartido comercial funciona gracias a los virtual hosts configurados automáticamente por el panel.
Si quieres migrar, crear o auditar la configuración de tus sitios, el equipo de elenlace.com puede ayudarte a diseñar una arquitectura de hosting a medida.
Preguntas frecuentes
¿Puedo tener virtual hosts con diferentes versiones de PHP?
Sí. Con PHP-FPM, cada virtual host puede apuntar a un socket diferente, cada uno ejecutando una versión distinta de PHP. Esto es común en servidores de agencias que gestionan clientes con requisitos distintos.
¿Los virtual hosts afectan el rendimiento del servidor?
El overhead de parsear los virtual hosts es mínimo. El factor de rendimiento real es cuántos recursos (CPU, RAM, ancho de banda) comparten los sitios alojados, no la cantidad de bloques de configuración.
¿Es posible usar virtual hosts en Windows con IIS?
Sí. En IIS se llaman sitios y se configuran con encabezados de host. El concepto es idéntico; la sintaxis y la interfaz de administración son distintas.
¿Qué pasa si dos virtual hosts tienen el mismo ServerName?
Apache usa el primero que encuentra en el orden de lectura de los archivos de configuración. Tener duplicados provoca comportamiento impredecible y debe evitarse siempre.
Para saber más
Otros proveedores y guías que vale la pena comparar: