Un virtual host (o vhost) en Apache es un bloque de configuración que le indica al servidor cómo responder cuando recibe una petición para un dominio determinado. Gracias a los virtual hosts, un solo servidor físico puede alojar decenas —o cientos— de sitios web independientes, cada uno con su propio dominio, directorio raíz y configuración.
Si alguna vez te preguntaste cómo funciona el hosting compartido por dentro, o cómo configurar múltiples sitios en un VPS, esta guía lo explica desde cero.
¿Para qué sirve un virtual host?
Sin virtual hosts, un servidor web solo podría atender un sitio. Con ellos, Apache examina el dominio de cada petición HTTP y la enruta al directorio y configuración correctos.
Algunos casos de uso comunes:
- Hosting compartido: el proveedor crea un vhost por cada cuenta de cliente.
- Entorno de desarrollo local: un desarrollador levanta
miprojecto.localycliente2.localen su máquina sin conflictos. - Microservicios internos: distintas aplicaciones en un mismo VPS responden a subdominios separados.
- Staging y producción en el mismo servidor:
staging.ejemplo.comyejemplo.comcon configuraciones distintas.
Tipos de virtual host en Apache
Apache soporta dos tipos principales de virtual hosts. Conocer la diferencia es clave para entender cómo funciona tu hosting.
1. Virtual host basado en nombre (Name-based)
Es el tipo más común. Apache diferencia los sitios por el encabezado Host que el navegador envía en la petición HTTP. Todos los dominios comparten la misma dirección IP del servidor.
Ventaja: No requiere múltiples IPs. Un servidor con una sola IP puede alojar cientos de dominios.
Ejemplo simplificado de configuración:
<VirtualHost *:80>
ServerName ejemplo.com
ServerAlias www.ejemplo.com
DocumentRoot /var/www/ejemplo
</VirtualHost>
<VirtualHost *:80>
ServerName cliente2.com
DocumentRoot /var/www/cliente2
</VirtualHost>
Este es el modelo que usa todo el hosting compartido moderno. Cuando contratas un plan con múltiples dominios adicionales, cada dominio tiene su propio bloque VirtualHost en la configuración de Apache.
2. Virtual host basado en IP (IP-based)
Apache diferencia los sitios por la dirección IP de destino. Cada dominio necesita su propia IP asignada al servidor.
Ventaja: Funciona incluso con clientes HTTP/1.0 muy antiguos que no envían el encabezado Host. También es necesario para SSL en versiones antiguas de Apache (anteriores a SNI).
Cuándo se usa hoy: Es poco frecuente en hosting compartido porque las IPs dedicadas tienen costo. Se usa en entornos corporativos donde cada aplicación requiere una IP propia por razones de segmentación de red.
Comparativa rápida
| Característica | Name-based | IP-based |
|---|---|---|
| IPs requeridas | Una sola IP para todos los dominios | Una IP por dominio |
| Compatibilidad SSL | Requiere SNI (todos los navegadores modernos lo soportan) | Funciona sin SNI |
| Uso típico | Hosting compartido, VPS, desarrollo local | Entornos corporativos, legacy |
| Costo | Sin costo adicional por IP | Costo por cada IP adicional |
Cómo Apache decide qué virtual host usar
El proceso es sencillo pero importante entenderlo para depurar problemas:
- El navegador envía una petición HTTP a la IP del servidor, incluyendo el encabezado
Host: ejemplo.com. - Apache revisa su lista de bloques
VirtualHosten orden. - Busca un bloque cuyo
ServerNameoServerAliascoincida con el valor del encabezadoHost. - Si hay coincidencia, sirve los archivos desde el
DocumentRootde ese bloque. - Si no hay coincidencia, Apache usa el virtual host por defecto —normalmente el primero de la lista.
Este comportamiento del vhost por defecto explica por qué a veces un dominio mal configurado muestra el sitio equivocado: Apache cae al primer virtual host disponible cuando no encuentra coincidencia.
Virtual hosts y SSL/HTTPS
Cuando necesitas HTTPS, cada dominio requiere su propio certificado SSL. Apache maneja esto mediante SNI (Server Name Indication), una extensión de TLS que permite al cliente anunciar el dominio antes de que Apache envíe el certificado.
Un bloque de virtual host con SSL se ve así:
<VirtualHost *:443>
ServerName ejemplo.com
DocumentRoot /var/www/ejemplo
SSLEngine on
SSLCertificateFile /etc/ssl/ejemplo.com.crt
SSLCertificateKeyFile /etc/ssl/ejemplo.com.key
</VirtualHost>
En hosting compartido, el panel de control (cPanel, Plesk, etc.) genera y gestiona estos bloques automáticamente cada vez que instalas un certificado SSL para un dominio adicional.
Para profundizar en opciones de hosting que soportan múltiples dominios con SSL, consulta las comparativas de proveedores de hosting.
Virtual hosts en el contexto del hosting compartido
Cuando contratas un plan de hosting compartido, el proveedor crea un virtual host de Apache por cada dominio que agregas a tu cuenta. Tú no ves ni editas esos archivos directamente, pero toda la magia ocurre ahí.
Los proveedores como cPanel generan los bloques de VirtualHost automáticamente en rutas como /etc/apache2/conf/userdata/ o mediante sus propias plantillas. Modificar esos archivos directamente no está disponible en hosting compartido —para eso necesitas acceso root, disponible solo en VPS o dedicados.
Si tu proyecto requiere configuraciones avanzadas de Apache (módulos personalizados, reglas de reescritura complejas, cabeceras de seguridad a nivel de servidor), trabajar con una agencia especializada en hosting puede ahorrarte horas de configuración y errores difíciles de depurar.
Conclusiones clave
- Un virtual host en Apache es el bloque de configuración que permite a un solo servidor atender múltiples dominios de forma independiente.
- Los virtual hosts basados en nombre son el estándar actual: comparten una IP y distinguen dominios por el encabezado
Hostde HTTP. - Los virtual hosts basados en IP requieren una IP por dominio y se usan en entornos legacy o corporativos específicos.
- Apache usa el primer virtual host como predeterminado cuando ningún bloque coincide con el dominio solicitado.
- HTTPS en virtual hosts funciona gracias a SNI, soportado por todos los navegadores modernos.
- En hosting compartido, el panel de control gestiona los virtual hosts automáticamente; en VPS necesitas acceso root para editarlos.
¿Necesitas configurar múltiples dominios o tienes dudas sobre qué plan te da el control necesario? Los especialistas de elenlace.com pueden orientarte sobre qué tipo de hosting se adapta mejor a tu proyecto.
Preguntas frecuentes
¿Cuántos virtual hosts puedo tener en Apache?
Apache no impone un límite técnico en el número de virtual hosts. El límite real es la memoria RAM y la capacidad del servidor para atender conexiones simultáneas. En la práctica, servidores de hosting compartido manejan fácilmente cientos o miles de virtual hosts.
¿El archivo .htaccess es parte del virtual host?
No directamente. El virtual host define si Apache permite o no leer archivos .htaccess dentro de su DocumentRoot (mediante la directiva AllowOverride). Si está habilitado, el .htaccess extiende o sobreescribe la configuración del vhost a nivel de directorio, sin necesidad de editar el archivo principal.
¿Por qué mi dominio muestra el sitio equivocado después de configurar un virtual host?
Casi siempre es por alguna de estas causas: los registros DNS del dominio aún no apuntan a la IP del servidor, el nombre en ServerName no coincide exactamente con el dominio (incluyendo o excluyendo el www.), o Apache no recargó su configuración después del cambio. Verifica los tres puntos en ese orden.
¿Necesito reiniciar Apache cada vez que agrego un virtual host?
No es necesario reiniciar completamente. Basta con recargar la configuración con apachectl graceful o systemctl reload apache2, lo que aplica los cambios sin interrumpir las conexiones activas.
Recursos útiles
Otros proveedores y guías que vale la pena comparar: