Empezaste con una web y tu VPS respondía de maravilla. Hoy tienes otra idea, otro cliente o una tienda nueva, y surge la duda de siempre: ¿contrato un servidor adicional o puedo aprovechar el que ya tengo? En toda Latinoamérica, freelancers y pequeños negocios se hacen esta pregunta cuando empiezan a crecer.
La respuesta es que puedes alojar tantas webs como los recursos de tu VPS permitan, usando virtual hosts en Nginx. Esta guía de nivel intermedio te lleva de la mano desde la instalación hasta el certificado SSL, con ejemplos de dominios .com, .net y .org, que funcionan igual en cualquier país de la región.
Antes de empezar: qué necesitas tener a mano
Para seguir esta guía necesitas cuatro cosas. Si te falta alguna, resuélvela primero y vuelve: te va a ahorrar mucha frustración.
- Un VPS con Ubuntu (22.04 o más nuevo) y acceso por SSH.
- Un usuario con permisos de administrador (
sudo), para no trabajar siempre como root. - Dos dominios (o más) que ya te pertenezcan, por ejemplo cafeandino.com y tallerlatam.net.
- Acceso al panel donde administras los DNS de esos dominios.
También conviene tener anotada la dirección IP de tu VPS. En los ejemplos usamos 203.0.113.10; tú reemplázala siempre por la tuya.
Cómo hace un VPS para atender muchos dominios
Cuando alguien escribe cafeandino.com en su navegador, la petición llega a la IP de tu VPS. Ahí ocurre el truco: junto con la petición viaja el nombre del dominio, y Nginx lo compara con una lista de reglas. Cada regla es un virtual host e indica qué carpeta mostrar, qué certificado usar y dónde guardar los registros.
Esto tiene tres ventajas claras:
- Pagas y mantienes un solo servidor.
- Cada web queda aislada en su propia carpeta y configuración.
- Sumar un sitio nuevo es copiar y adaptar un archivo, no volver a empezar.
Una guía que sirve en toda la región
Lo bueno de esta configuración es que no depende del país: un VPS con Nginx se comporta igual en México, Colombia, Perú o Ecuador. Lo que sí puedes adaptar es tu forma de trabajar. Si atiendes clientes de distintos países, anota su zona horaria y programa los cambios importantes en horarios de menor movimiento para ellos.
También ayuda decidir con antelación cómo documentarás cada sitio. Una hoja compartida con el dominio, la carpeta, la fecha de vencimiento y el contacto del cliente evita confusiones cuando manejas varios proyectos a la vez. Y recuerda que las extensiones .com, .net y .org se configuran de la misma manera en el servidor, sin pasos adicionales.
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: crea una carpeta para cada web
Cada sitio necesita su propio espacio, separado de los demás. Así, si un día tienes que borrar o mover uno, los otros ni se enteran. Una convención muy usada es /var/www/dominio/public_html:
sudo mkdir -p /var/www/cafeandino.com/public_html
sudo mkdir -p /var/www/tallerlatam.net/public_html
sudo chown -R $USER:www-data /var/www/cafeandino.com /var/www/tallerlatam.net
sudo chmod -R 755 /var/www
El chown te hace dueño de las carpetas y le da al grupo www-data (el usuario con el que corre Nginx) acceso de lectura. Después, crea una página de prueba distinta en cada sitio, para saber con certeza cuál estás viendo:
echo '<h1>Hola, soy cafeandino.com</h1>' | tee /var/www/cafeandino.com/public_html/index.html
echo '<h1>Hola, soy tallerlatam.net</h1>' | tee /var/www/tallerlatam.net/public_html/index.html
Paso 3: escribe un bloque server por dominio
En Nginx, cada dominio tiene su propio bloque server. Abre un archivo nuevo en /etc/nginx/sites-available/ con el nombre exacto de tu dominio, por ejemplo sudo nano /etc/nginx/sites-available/cafeandino.com, y complétalo así:
server {
listen 80;
listen [::]:80;
server_name cafeandino.com www.cafeandino.com;
root /var/www/cafeandino.com/public_html;
index index.html index.htm;
access_log /var/log/nginx/cafeandino.com.access.log;
error_log /var/log/nginx/cafeandino.com.error.log;
location / {
try_files $uri $uri/ =404;
}
}
Esto le dice a Nginx: «cuando llegue una visita pidiendo cafeandino.com o www.cafeandino.com, muestra los archivos de esa carpeta y anota lo que pase en estos dos registros». Repite todo el proceso para tallerlatam.net. Si te equivocas en el nombre de una carpeta, el sitio va a responder con un error 404, así que revisa bien cada ruta.
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/cafeandino.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/tallerlatam.net /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 dominios a tu VPS
El servidor ya sabe qué mostrar, pero los dominios todavía no saben dónde está tu servidor. En el panel donde administras los DNS de cada dominio, crea estos registros:
- Registro A con nombre
@apuntando a la IP de tu VPS. - Registro A (o CNAME) con nombre
wwwapuntando a la misma IP o al dominio principal.
Los cambios pueden tardar desde unos minutos hasta algunas horas en verse en todas partes. Para comprobar el avance sin adivinar, usa estos comandos:
dig +short cafeandino.com
dig +short www.cafeandino.com
dig +short tallerlatam.net
Cuando devuelvan la IP de tu VPS, abre cafeandino.com y tallerlatam.net en el navegador: cada uno tiene que mostrar su propio «Hola, soy…». Si ves el mismo saludo en los dos, pasa a la sección de problemas frecuentes.
Paso 6: activa el candado de seguridad (SSL)
Con Nginx y Certbot, activar SSL en cada virtual host lleva un par de minutos. Certbot comprueba que el dominio realmente apunta a tu servidor, obtiene el certificado y modifica solo el bloque del sitio correspondiente:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d cafeandino.com -d www.cafeandino.com
sudo certbot --nginx -d tallerlatam.net -d www.tallerlatam.net
sudo certbot renew --dry-run
Repite el comando de certificado para cada dominio que sumes en el futuro. Al terminar, prueba https://cafeandino.com y busca el candado en la barra del navegador. La simulación de renovación confirma que, de acá en adelante, el certificado se va a renovar sin que tú hagas nada.
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/cafeandino.com.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.
Cómo mantener varias webs ordenadas y rápidas
Con varias webs conviviendo en un mismo VPS, el orden es tu mejor aliado:
- Un archivo de configuración por dominio, con el nombre del dominio.
- Copias de seguridad de
/var/wwwy de/etc/nginxantes de cualquier cambio grande. - Actualizaciones semanales con
sudo apt update && sudo apt upgrade.
Sobre el rendimiento, está en tus manos mejorarlo: optimiza las imágenes antes de subirlas y activa la compresión y el caché de archivos estáticos dentro del bloque server de cada sitio:
gzip on;
location ~* \.(jpg|jpeg|png|webp|css|js)$ { expires 30d; }
Con htop puedes ver qué proceso usa más memoria y decidir qué ajustar primero. Esos tres hábitos hacen que cada web cargue ágil, aunque convivan varias en el mismo servidor.
Preguntas que suelen aparecer
¿Cuántas webs soporta mi VPS?
Depende de sus recursos y del tráfico de cada sitio. Lo prudente es sumar webs de a una y vigilar el uso de memoria y procesador después de cada alta.
¿Puedo alojar WordPress?
Claro. Cada sitio puede tener su propia instalación y su propia base de datos, siempre que tu servidor tenga PHP configurado.
¿Y si me equivoco en la configuración?
No pasa nada grave: nginx -t detecta el error antes de aplicarlo y, mientras no recargues, tus sitios siguen funcionando como antes.
¿Conviene un VPS para una sola web?
Puede convenir si necesitas control, pero también está bien empezar con un plan más simple y migrar cuando tu proyecto lo pida.
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.
Crece sin multiplicar servidores
Un VPS bien configurado puede acompañar el crecimiento de tu negocio durante mucho tiempo. Los virtual hosts te permiten sumar proyectos con orden, sin depender de más infraestructura de la necesaria.
Empieza hoy con dos dominios, sigue los pasos en el orden indicado y verifica cada uno antes de seguir. Cuando termines, tendrás una base lista para repetir con todos los sitios que vengan después.
