Tu VPS ya está en línea y la primera web funciona. Pero los proyectos no vienen de a uno: aparece el portafolio de un amigo, la tienda de un cliente o tu propio blog, y todos necesitan su dirección. Si cada uno requiriera su propio servidor, el costo y el trabajo crecerían rápido.
Con virtual hosts en Nginx, un único VPS puede responder por todos tus dominios sin mezclar nada. En esta guía de nivel intermedio aprenderás a hacerlo con calma: instalarás Nginx, ordenarás las carpetas, escribirás un archivo de configuración por sitio y activarás el candado de seguridad. Todos los ejemplos usan dominios .com, .net y .org.
Antes de empezar: lista de requisitos
Esta guía es de nivel intermedio: no hace falta ser administrador de sistemas, pero sí sentirte cómodo escribiendo comandos en una terminal. Antes de arrancar, confirma que tienes lo siguiente:
- Un VPS con Ubuntu 22.04 o superior, al que ya te puedes conectar por SSH.
- Un usuario común con permisos de
sudo(trabajar siempre como root es una mala costumbre). - Al menos dos dominios propios; en los ejemplos usamos estudiolider.com y fotoslider.org.
- La IP pública de tu VPS. Acá usamos
203.0.113.10como ejemplo: pon la tuya.
Si todavía no sabes conectarte por SSH, haz primero esa práctica y después vuelve. Todo lo que sigue se apoya en eso.
El problema: un solo servidor, varias webs
Tienes un VPS y ya lograste que una web funcione. Ahora aparece otro proyecto, como la tienda de un cliente, tu blog o una página de prueba, y te preguntas si hace falta contratar otro servidor. La respuesta corta es que no: un solo VPS puede alojar muchas webs a la vez, siempre que le expliques cómo distinguirlas.
Esa explicación se llama virtual host (en Nginx también se lo conoce como server block). Es una regla que dice: «cuando alguien pida estudiolider.com, muestra los archivos de esta carpeta; cuando pida fotoslider.org, muestra los de aquella». El navegador envía el nombre del dominio dentro de la petición y el servidor elige la regla que corresponde.
El resultado: varias webs, una sola IP y un solo servidor para mantener.
Cuando tus dominios vienen de distintos lugares
Es muy común que los dominios de un mismo servidor estén registrados en lugares diferentes: uno lo compró tu cliente, otro lo registraste tú y otro llegó con un proyecto heredado. No hay problema: al servidor solo le importa que el registro A del dominio apunte a la IP de tu VPS. Lo que cambia es el panel donde debes crearlo.
Antes de empezar, haz una lista con cada dominio, el lugar donde se administran sus DNS y quién tiene acceso. Así evitarás perder tiempo buscando contraseñas justo cuando necesitas hacer un cambio. Con extensiones .com, .net u .org, el procedimiento en Nginx es siempre el mismo.
Paso 1: instala el servidor web (Nginx)
Nginx es el programa que recibe las visitas y entrega tus páginas. Es liviano, muy usado y se instala en un minuto:
sudo apt update
sudo apt install nginx -y
sudo systemctl enable --now nginx
Para comprobarlo, entra a la IP de tu VPS desde el navegador: deberías ver la página de bienvenida de Nginx. Si usas el firewall ufw, permite el tráfico web con los comandos de abajo. Recuerda que SSH tiene que estar permitido antes de activar el firewall; de lo contrario, pierdes tu acceso remoto.
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable
Paso 2: una carpeta por cada sitio
Para no mezclar archivos, cada web va en su propia carpeta dentro de /var/www. Es la convención más usada y facilita muchísimo los backups. Crea la estructura y asigna los permisos para que puedas editar los archivos y Nginx pueda leerlos:
sudo mkdir -p /var/www/estudiolider.com/public_html
sudo mkdir -p /var/www/fotoslider.org/public_html
sudo chown -R $USER:www-data /var/www/estudiolider.com /var/www/fotoslider.org
sudo chmod -R 755 /var/www
Por último, guarda una página de prueba distinta en cada carpeta. Es un truco simple pero muy útil: si después ves el texto equivocado en el navegador, sabes enseguida dónde está el error.
echo '<h1>Hola, soy estudiolider.com</h1>' | tee /var/www/estudiolider.com/public_html/index.html
echo '<h1>Hola, soy fotoslider.org</h1>' | tee /var/www/fotoslider.org/public_html/index.html
Paso 3: escribe el virtual host de cada dominio
Nginx guarda las configuraciones en /etc/nginx/sites-available/. Crea un archivo por sitio con sudo nano /etc/nginx/sites-available/estudiolider.com (nunca mezcles dos dominios en el mismo archivo, porque después cuesta encontrar los errores) y pega este contenido:
server {
listen 80;
listen [::]:80;
server_name estudiolider.com www.estudiolider.com;
root /var/www/estudiolider.com/public_html;
index index.html index.htm;
access_log /var/log/nginx/estudiolider.com.access.log;
error_log /var/log/nginx/estudiolider.com.error.log;
location / {
try_files $uri $uri/ =404;
}
}
Las líneas que importan son tres: server_name (qué dominios atiende), root (qué carpeta muestra) y los logs separados (para saber qué pasa en cada web). Repite el proceso para fotoslider.org, cambiando el dominio en cada línea donde aparece.
Paso 4: enciende los sitios y prueba antes de aplicar
Los archivos de sites-available son borradores; los que están enlazados en sites-enabled son los que Nginx realmente usa. Para encenderlos, ejecuta:
sudo ln -s /etc/nginx/sites-available/estudiolider.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/fotoslider.org /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Fíjate que primero probamos (nginx -t) y recién después recargamos. Con reload los visitantes que están navegando no se enteran del cambio, mientras que restart corta las conexiones por un instante. Si el test marca un error, corrige el archivo que indica y prueba otra vez antes de recargar.
Paso 5: haz que los dominios encuentren tu VPS
Hasta acá el servidor está listo, pero los dominios todavía no saben dónde queda. Entra a la zona DNS de cada uno y carga estos registros:
- Un registro A con host
@y como valor la IP de tu VPS. - Un registro A con host
wwwy el mismo valor (también puedes usar un CNAME que apunte al dominio principal).
Guarda los cambios y espera. Con estos comandos compruebas qué IP está viendo el mundo:
dig +short estudiolider.com
dig +short www.estudiolider.com
dig +short fotoslider.org
Cuando coincida con la tuya, ya puedes probar. Abre cada dominio en el navegador y verifica que muestre su propio mensaje de bienvenida.
Paso 6: activa el certificado SSL gratis en cada sitio
Hoy una web sin candado genera desconfianza y los navegadores la marcan como «no segura». Con Let’s Encrypt y Certbot el certificado es gratuito y se renueva solo. Es importante que los DNS ya apunten a tu VPS antes de este paso, porque Let’s Encrypt verifica que el dominio sea realmente tuyo.
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d estudiolider.com -d www.estudiolider.com
sudo certbot --nginx -d fotoslider.org -d www.fotoslider.org
sudo certbot renew --dry-run
Certbot te hace unas preguntas (correo de contacto, aceptar los términos) y te ofrece redirigir todo el tráfico HTTP a HTTPS: di que sí. La última línea simula una renovación; si termina sin errores, ya no tienes que acordarte de renovar nada, porque el sistema lo hace por tú antes del vencimiento.
Los errores más frecuentes (y su solución)
- Aparece «Welcome to nginx»: falta habilitar el sitio o el
server_nameno coincide con el dominio que escribiste. - Mismo sitio en dos dominios: casi siempre es un
server_namerepetido o mal escrito. - 403 Forbidden: revisa los permisos de la carpeta y que exista un archivo de inicio.
- 404 Not Found: la ruta de
rootno coincide con la carpeta real; compara letra por letra. - Certbot no valida: los DNS todavía no apuntan al VPS. Espera un rato y reintenta.
Mira siempre primero el registro de errores del sitio con sudo tail -n 30 /var/log/nginx/estudiolider.com.error.log. Un minuto leyendo ese archivo te ahorra una hora de pruebas al azar.
Buenas prácticas para no perder el control
Cuando el VPS aloja más de un sitio, conviene sumar algunos hábitos desde el principio:
- Prueba siempre con
nginx -tantes de recargar. - Guarda una copia de
/etc/nginxy de cada carpeta de/var/wwwantes de modificar algo importante. - Mantén el sistema actualizado con
sudo apt update && sudo apt upgrade. - Revisa los logs de cada sitio por separado, para saber cuál recibe más visitas o errores.
Para que cada web cargue rápido, piensa en lo que puedes ajustar tú: imágenes livianas, compresión y caché del navegador. Estas dos líneas dentro del bloque server son un buen comienzo:
gzip on;
location ~* \.(jpg|jpeg|png|webp|css|js)$ { expires 30d; }
Revisa de vez en cuando el uso de memoria con htop y prioriza optimizar el sitio que más recursos consume.
Preguntas frecuentes
¿Cuántas webs puedo alojar en un VPS?
Depende de los recursos del plan (procesador, memoria y disco) y del tamaño de cada sitio. Una web estática o un blog pequeño consume muy poco, mientras que una tienda con muchas visitas necesita más. Conviene empezar con pocas, medir con htop y sumar de a una.
¿Puedo usar WordPress en alguno de los sitios?
Sí. Cada virtual host puede tener su propia instalación, con su base de datos y sus archivos. Solo hace falta sumar el soporte de PHP, que es un paso aparte.
¿Qué pasa si sumo un dominio nuevo?
Repites el molde: carpeta, archivo en sites-available, enlace en sites-enabled, DNS y certificado. Cada sitio nuevo lleva unos minutos.
¿Necesito reiniciar el servidor?
No. Con sudo nginx -t y sudo systemctl reload nginx alcanza.
Un plan para tus próximos siete días
- Día 1: reúne los datos (IP, dominios, acceso SSH) e instala Nginx.
- Día 2: crea las carpetas y los virtual hosts de tus dos primeros sitios.
- Día 3: apunta los DNS y verifica la propagación.
- Día 4: activa SSL en todos los dominios.
- Día 5: configura compresión y caché.
- Día 6: haz tu primera copia de seguridad.
- Día 7: suma un tercer sitio, ahora que ya conoces el molde.
Un molde que repetirás muchas veces
Lo más valioso de esta guía es que el proceso es repetible: una vez que entiendes cómo se arma un virtual host, sumar el siguiente sitio es cuestión de copiar, adaptar y probar. Con práctica, lo harás en minutos.
No esperes a sentirte experto. Elige dos dominios, sigue cada paso con atención y comprueba el resultado. El mejor momento para empezar es hoy mismo.