UA-51298262-10 Skip to main content
Dominios

VirtualHosts: configurar subdominios y dominios en un VPS

By septiembre 25, 2026No Comments
VirtualHosts: configurar subdominios y dominios en un VPS

Si gestionas un VPS con Apache, tarde o temprano te toca alojar más de un sitio. Ahí entran los VirtualHosts: un único servidor sirviendo decenas de dominios y subdominios, cada uno con su directorio raíz, sus logs y su configuración propia. Nada de contratar una máquina para cada proyecto. En esta primera parte veremos qué son exactamente, qué necesitas tener listo antes de empezar y el proceso completo, paso a paso, para dar de alta subdominios y dominios adicionales.

¿Qué son los VirtualHosts y por qué usarlos en un VPS?

La idea es sencilla. Un VirtualHost es un bloque de configuración que le dice a Apache cómo debe responder cuando llega una petición para un dominio concreto. Apache mira el encabezado Host de la petición HTTP, lo compara con los bloques definidos y sirve el contenido que corresponda. Hay dos tipos: los basados en IP (uno por dirección) y los basados en nombre, que son los que se usan de forma habitual y los que trabajaremos aquí.

¿Qué ganas en un VPS? Bastante:

  • Ahorro de costes: un solo servidor para todos tus proyectos.
  • Aislamiento: cada sitio tiene su document root y sus logs independientes.
  • Configuración granular: puedes activar HTTPS, reglas de reescritura o versiones de PHP distintas por sitio.
  • Escalabilidad: añadir un dominio nuevo lleva menos de cinco minutos.

Para quien quiera montar varias instalaciones de WordPress en la misma máquina, cada una con su dominio, esta arquitectura es justo lo que busca.

Requisitos previos: DNS, Apache y permisos en el servidor

Antes de tocar configuración, conviene tener esto resuelto:

  1. Registros DNS apuntando al VPS: crea un registro A para el dominio principal (por ejemplo, midominio.com) y otro para el subdominio (blog.midominio.com) con la IP pública de tu servidor. La propagación puede tardar entre 15 minutos y 24 horas.
  2. Apache instalado y en funcionamiento: en Debian/Ubuntu, sudo apt install apache2; en CentOS/AlmaLinux, sudo dnf install httpd. Verifica con sudo systemctl status apache2.
  3. Acceso por SSH con privilegios sudo: vas a necesitar editar archivos de configuración y recargar el servicio.
  4. Permisos correctos: el usuario de Apache (www-data en Ubuntu, apache en CentOS) debe poder leer los directorios de los sitios. Un patrón que funciona bien es sudo chown -R www-data:www-data /var/www/midominio.com con permisos 755 en directorios y 644 en archivos.

Consejo: crea cada sitio en /var/www/dominio.com/public_html. Ese subdirectorio public_html como document root mantiene separados los archivos web de configuraciones o backups que no deben servirse públicamente.

Cómo configurar VirtualHosts para un subdominio paso a paso

Pongamos que quieres dar de alta blog.midominio.com. El orden sería este:

  1. Crea la estructura de directorios:

    sudo mkdir -p /var/www/blog.midominio.com/public_html

  2. Asigna la propiedad:

    sudo chown -R $USER:$USER /var/www/blog.midominio.com/public_html

  3. Crea el archivo de configuración:

    sudo nano /etc/apache2/sites-available/blog.midominio.com.conf

  4. Añade el bloque VirtualHost:

<VirtualHost *:80>
  ServerName blog.midominio.com
  DocumentRoot /var/www/blog.midominio.com/public_html
  ErrorLog ${APACHE_LOG_DIR}/blog_error.log
  CustomLog ${APACHE_LOG_DIR}/blog_access.log combined
</VirtualHost>

Ya casi está. Queda lo siguiente:

  • Activa el sitio: sudo a2ensite blog.midominio.com.conf.
  • Verifica la sintaxis: sudo apache2ctl configtest. Debe devolver Syntax OK.
  • Recarga Apache: sudo systemctl reload apache2.

Importante: en CentOS/AlmaLinux no existen a2ensite ni el directorio sites-available. Añade los bloques directamente en /etc/httpd/conf.d/ con extensión .conf y ejecuta sudo systemctl restart httpd.

Para comprobar que todo funciona, crea un archivo de prueba (echo «<h1>Funciona</h1>» | sudo tee /var/www/blog.midominio.com/public_html/index.html) y abre http://blog.midominio.com en el navegador.

Añadir dominios adicionales al mismo VPS con VirtualHosts

Para un dominio completamente distinto, el proceso es el mismo que con el subdominio: creas el directorio en /var/www/otrodominio.com/public_html, copias el bloque VirtualHost en un archivo nuevo llamado otrodominio.com.conf y cambias ServerName y DocumentRoot. Apache no pone límite al número de bloques. El límite lo marcan la memoria y los recursos del VPS.

Algunos detalles que conviene tener en cuenta:

  • Añade ServerAlias www.otrodominio.com si quieres que el sitio responda también con www.
  • La primera carga de cada dominio exige que sus DNS apunten a la IP del VPS; compruébalo con dig otrodominio.com +short.
  • ¿Dominios de terceros en el mismo servidor? Recuerda instalar después certificados SSL independientes con Certbot para cada uno.

Con esto ya tienes un VPS multi-sitio que funciona. En la segunda parte del artículo veremos la configuración de HTTPS con Let’s Encrypt, los logs por dominio y los errores más típicos al montar VirtualHosts. Y si prefieres que lo haga un técnico, en RedServicio (redservicio.net) encontrarás ayuda profesional para administrar tu VPS y sus VirtualHosts.

Activar SSL con Let’s Encrypt para cada VirtualHost

Tus VirtualHosts ya responden por HTTP. Bien. Ahora toca habilitar HTTPS, que hoy es imprescindible. Con Certbot, el cliente oficial de Let’s Encrypt, el proceso es automático: detecta los ServerName definidos en tus VirtualHosts y genera los certificados correspondientes.

Instala Certbot según tu distribución:

  1. En Debian/Ubuntu: sudo apt install certbot python3-certbot-apache (o python3-certbot-nginx si usas Nginx).
  2. En CentOS/AlmaLinux: sudo dnf install certbot python3-certbot-apache.
  3. Ejecuta sudo certbot –apache -d dominio.com -d www.dominio.com para cada dominio o subdominio.

Certbot modificará tus VirtualHosts añadiendo el bloque de escucha en el puerto 443, la ruta a los certificados y, si así lo indicas, la redirección de HTTP a HTTPS. Un detalle: cada dominio necesita un registro DNS válido apuntando a tu VPS antes de emitir el certificado. Si no, la validación falla. Sin excepciones.

La renovación es automática mediante el temporizador de systemd. Aun así, compruébala con sudo certbot renew –dry-run antes de que venzan los certificados a los 90 días. Mejor detectar un fallo en una prueba que en producción.

Errores comunes al configurar VirtualHosts y cómo evitarlos

Por mucho que sigas la documentación, hay fallos que se repiten una y otra vez. Estos son los más habituales:

  • Se carga siempre el mismo sitio: normalmente falta el ServerName en algún VirtualHost, y Apache acaba sirviendo el primero definido alfabéticamente. Revisa que cada bloque tenga su ServerName y ServerAlias.
  • Error 403 Forbidden: mira los permisos del directorio raíz. Apache necesita permiso de lectura y ejecución en toda la ruta, además de la directiva Require all granted dentro del bloque Directory.
  • AH00558: Could not reliably determine the server’s fully qualified domain name: un aviso inofensivo. Se soluciona añadiendo ServerName localhost en el archivo de configuración principal.
  • Los cambios no surten efecto: editaste el archivo pero no recargaste Apache. Ejecuta siempre sudo systemctl reload apache2 o nginx -s reload. Pasa más de lo que parece.
  • Sitio caído tras activar un nuevo VirtualHost: casi seguro, un error de sintaxis. Usa apachectl configtest antes de recargar y lo detectarás.
  • DNS no propagado: si acabas de crear el subdominio, dale tiempo. Compruébalo con dig subdominio.dominio.com +short.

Ante cualquier comportamiento raro, consulta los logs de error: /var/log/apache2/error.log o el log que hayas definido en cada VirtualHost. Casi siempre la causa está registrada ahí, esperando a que la leas.

Conclusión: gestiona múltiples dominios en tu VPS con seguridad

Dominar los VirtualHosts es la base para sacarle todo el partido a un VPS: varios dominios, subdominios y proyectos en un mismo servidor, de forma aislada y organizada. Como hemos visto, el proceso se reduce a crear los registros DNS, definir un archivo de configuración por sitio con su ServerName y DocumentRoot, habilitar el sitio, verificar la sintaxis y recargar el servidor web.

Hay cuatro puntos que no deberías olvidar nunca: mantener una estructura de directorios ordenada, definir logs separados por dominio para facilitar el diagnóstico, activar SSL con Let’s Encrypt en todos los sitios y validar siempre la configuración antes de recargar. Ojo con esto último. Un error de sintaxis puede tumbar todos tus sitios a la vez, así que la precaución nunca es excesiva.

Si gestionas muchos dominios o simplemente prefieres no arriesgar la disponibilidad de tus sitios, en RedServicio (redservicio.net) encontrarás ayuda profesional para administrar tu VPS, configurar tus VirtualHosts y mantener tu infraestructura segura y siempre operativa.