Ya tienes tu VPS en línea con una web funcionando, y ahora te piden una segunda: la página de un cliente, una tienda nueva o tu propio blog. Pensar en contratar otro servidor para cada proyecto suena lógico, pero multiplica costos, accesos y tareas de mantenimiento.
Hay una alternativa mucho más ordenada: usar virtual hosts en Nginx para que un solo VPS atienda todos tus dominios. En esta guía de nivel intermedio verás, paso a paso y con comandos listos para copiar, cómo preparar las carpetas, escribir la configuración, apuntar los dominios .cl y activar el certificado SSL gratuito. Si ya te has conectado alguna vez por SSH, tienes todo lo necesario para empezar.
Qué necesitas preparar primero
Un buen orden evita la mayoría de los errores. Antes de tocar el servidor, deja listo este kit mínimo:
- Acceso SSH a tu VPS con Ubuntu (22.04 o más nuevo).
- Un usuario con sudo, para ejecutar comandos de administrador de forma controlada.
- Tus dominios, en este caso tiendasur.cl y blogsur.cl, con acceso a su zona DNS.
- La IP de tu servidor anotada en un lugar a la vista. En los ejemplos usamos
203.0.113.10.
Ten también un editor de texto sencillo en la terminal. En esta guía usamos nano, que es el más amigable para empezar.
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 tiendasur.cl, muestra los archivos de esta carpeta; cuando pida blogsur.cl, 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.
Dominios .cl en tu VPS: qué considerar
Para Nginx, un dominio .cl se configura igual que un .com: lo único que importa es el nombre que escribes en server_name. La diferencia está en los DNS. Si tu .cl usa los servidores de nombres de tu proveedor, los registros A se crean desde su panel; si lo delegaste en otro servicio, debes editarlos allí. Cuando necesites cambiar la delegación, ese trámite se realiza desde NIC Chile con la cuenta del titular del dominio.
Después de cualquier cambio de DNS conviene esperar un rato antes de pedir el certificado SSL, porque Let’s Encrypt necesita encontrar tu dominio apuntando al VPS. Si estás montando el sitio de un cliente, avísale que durante esas horas puede ver la versión anterior y que es completamente normal.
Paso 1: instala y verifica Nginx
Conéctate a tu VPS y ejecuta estos comandos, uno por uno. El primero actualiza la lista de programas disponibles, el segundo instala Nginx y el tercero lo deja activo incluso después de reiniciar el servidor:
sudo apt update
sudo apt install nginx -y
sudo systemctl enable --now nginx
Ahora verifica que esté vivo con systemctl status nginx (tiene que mostrar active (running)) y abre http://203.0.113.10 en el navegador, con tu IP real. Si aparece «Welcome to nginx», la instalación salió bien.
Si la página no carga, probablemente el firewall esté bloqueando el puerto 80. Permite SSH antes que nada para no perder el acceso y recién después habilita la web:
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable
Paso 2: ordena el espacio de cada web
Imagina que cada sitio es un inquilino con su propia llave: su carpeta tiene que estar separada y con permisos razonables. La idea es esta:
- Crear
/var/www/tiendasur.cl/public_htmly/var/www/blogsur.cl/public_htmlconmkdir -p. - Dar la propiedad a tu usuario y el grupo
www-data, que es el que usa Nginx para leer los archivos. - Asignar permisos
755, para que se pueda leer y recorrer pero no escribir libremente. - Guardar un
index.htmlde prueba en cada carpeta.
Los comandos completos son estos:
sudo mkdir -p /var/www/tiendasur.cl/public_html
sudo mkdir -p /var/www/blogsur.cl/public_html
sudo chown -R $USER:www-data /var/www/tiendasur.cl /var/www/blogsur.cl
sudo chmod -R 755 /var/www
echo '<h1>Hola, soy tiendasur.cl</h1>' | tee /var/www/tiendasur.cl/public_html/index.html
echo '<h1>Hola, soy blogsur.cl</h1>' | tee /var/www/blogsur.cl/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/tiendasur.cl (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 tiendasur.cl www.tiendasur.cl;
root /var/www/tiendasur.cl/public_html;
index index.html index.htm;
access_log /var/log/nginx/tiendasur.cl.access.log;
error_log /var/log/nginx/tiendasur.cl.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 blogsur.cl, cambiando el dominio en cada línea donde aparece.
Paso 4: habilita los sitios y recarga Nginx
Nginx solo lee lo que está en sites-enabled, por eso creamos enlaces que apuntan a los archivos que acabamos de escribir. Después probamos la configuración antes de aplicarla; es un hábito que te salva de dejar todos tus sitios caídos por un error de tipeo:
sudo ln -s /etc/nginx/sites-available/tiendasur.cl /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/blogsur.cl /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Si nginx -t responde syntax is ok, el recargado queda hecho. Si responde con un error, lee con calma el mensaje: indica el archivo y el número de línea.
Paso 5: apunta los DNS a la IP de tu servidor
Tu virtual host solo se activa cuando las visitas llegan a tu IP. Para lograrlo, en el panel DNS de cada dominio crea el registro A de la raíz (@) y el de www, ambos con la IP de tu VPS. Después consulta:
dig +short tiendasur.cl
dig +short www.tiendasur.cl
dig +short blogsur.cl
Esos comandos te muestran la IP que responde cada dominio. Mientras sigan mostrando la dirección anterior, los cambios todavía no se propagaron: es normal que lleve un rato, así que no cambies nada de más. Cuando veas tu IP nueva, prueba cada sitio y confirma que muestra su mensaje correcto.
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 tiendasur.cl -d www.tiendasur.cl
sudo certbot --nginx -d blogsur.cl -d www.blogsur.cl
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.
Si algo no funciona: guía rápida de diagnóstico
- Prueba la sintaxis:
sudo nginx -tdetecta la mayoría de los errores de configuración. - Mira el log del sitio:
sudo tail -n 30 /var/log/nginx/tiendasur.cl.error.logte cuenta qué pasó. - Revisa el enlace: comprueba que el archivo exista en
sites-enabledconls -l /etc/nginx/sites-enabled/. - Verifica los permisos: el error 403 casi siempre significa que Nginx no puede leer la carpeta o que falta el
index.html. - Confirma los DNS: si Certbot falla, lo más probable es que el dominio todavía no apunte a tu IP.
Y si dos dominios muestran el mismo contenido, revisa el server_name de cada archivo: Nginx usa el primer bloque cuando no encuentra una coincidencia exacta.
Mantenimiento: tus webs cuidadas con poco esfuerzo
Un VPS con varias webs no necesita mucho trabajo, pero sí constancia. Esta rutina de diez minutos por semana alcanza:
- Actualiza los paquetes con
sudo apt update && sudo apt upgrade. - Verifica que los certificados sigan vigentes y que la renovación automática no falle.
- Haz una copia de seguridad de las carpetas de cada sitio.
- Mira los logs buscando errores repetidos.
En cuanto a velocidad, la mejora depende de cómo prepares cada sitio: sube imágenes optimizadas y activa compresión y caché para los archivos estáticos:
gzip on;
location ~* \.(jpg|jpeg|png|webp|css|js)$ { expires 30d; }
Si quieres saber qué sitio usa más recursos, htop te lo muestra en tiempo real. Con eso puedes decidir dónde conviene optimizar primero.
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.
Checklist final antes de dar el trabajo por terminado
- Cada dominio muestra su propia página, no la de otro.
- Hay un archivo de configuración por sitio en
sites-available. nginx -tresponde sin errores.- Los registros A de la raíz y de
wwwapuntan a la IP correcta. - El candado de HTTPS aparece en todos los sitios.
- Hiciste una copia de seguridad de
/etc/nginxy/var/www.
Marca cada punto a medida que lo verificas. Si alguno falla, vuelve a la sección de problemas frecuentes.
Tu servidor puede hacer mucho más
Con los virtual hosts, tu VPS deja de ser el hogar de una sola web y se convierte en una pequeña plataforma para todos tus proyectos. Los primeros pasos exigen atención, pero después se vuelven una rutina que dominas en pocos minutos.
Elige hoy dos dominios, sigue la guía en orden y verifica cada paso antes de avanzar. En un rato tendrás tus sitios funcionando, cada uno con su candado de seguridad.
