Para instalar Nginx en un VPS con Ubuntu o Debian basta con ejecutar sudo apt install nginx — el servidor queda activo de inmediato. Esta guía te lleva desde ese primer comando hasta tener un sitio real sirviendo tráfico con un virtual host configurado correctamente.
¿Por qué Nginx y no Apache?
Nginx nació para resolver el C10K problem: atender miles de conexiones simultáneas sin crear un proceso por cada una. Usa una arquitectura orientada a eventos que consume poca memoria incluso bajo carga alta.
- Rendimiento: archivos estáticos a velocidad de disco; proxy inverso sin overhead.
- Memoria: un worker Nginx ocupa ~5 MB, frente a los ~20-30 MB de un worker Apache prefork.
- Versatilidad: sirve como servidor web, proxy inverso, balanceador de carga y caché HTTP.
- Adopción: es el servidor web más usado en sitios de alto tráfico a nivel mundial.
Si tu VPS tiene 1-2 GB de RAM y prevés picos de tráfico, Nginx es la elección natural. Para profundizar en cómo dimensionar tu servidor, revisa la guía de servidores VPS en nuestro blog.
Requisitos previos
- VPS con Ubuntu 22.04 / 24.04 o Debian 11 / 12 (estas instrucciones aplican a ambos).
- Acceso SSH con usuario
sudo(no trabajes como root directo). - Puerto 80 y 443 abiertos en el firewall del proveedor y en UFW/iptables.
- Un nombre de dominio apuntando a la IP del VPS (para el bloque server con nombre).
Instalación de Nginx paso a paso
1. Actualiza los repositorios e instala el paquete
sudo apt update
sudo apt install nginx -y
Al terminar, Nginx arranca automáticamente. Verifica el estado:
sudo systemctl status nginx
Deberías ver active (running) en verde.
2. Abre los puertos en UFW
Si usas UFW (cortafuegos de Ubuntu), habilita el perfil de Nginx:
sudo ufw allow 'Nginx Full'
sudo ufw status
Nginx Full abre tanto el puerto 80 (HTTP) como el 443 (HTTPS). Si aún no tienes certificado, usa Nginx HTTP provisionalmente.
3. Comprueba que sirve la página por defecto
Abre en tu navegador http://<IP-del-VPS>. Debes ver la pantalla de bienvenida de Nginx con el texto "Welcome to nginx!".
Configurar un Virtual Host (bloque server)
Nginx organiza los sitios en bloques server dentro de /etc/nginx/sites-available/. Cada archivo describe un dominio.
Crear el directorio del sitio
sudo mkdir -p /var/www/tusitio.com/html
sudo chown -R $USER:$USER /var/www/tusitio.com/html
Escribir el bloque server
sudo nano /etc/nginx/sites-available/tusitio.com
Pega el siguiente bloque base:
server {
listen 80;
listen [::]:80;
server_name tusitio.com www.tusitio.com;
root /var/www/tusitio.com/html;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ =404;
}
access_log /var/log/nginx/tusitio.com.access.log;
error_log /var/log/nginx/tusitio.com.error.log;
}
Activar el sitio y recargar Nginx
sudo ln -s /etc/nginx/sites-available/tusitio.com /etc/nginx/sites-enabled/
sudo nginx -t # valida la configuración
sudo systemctl reload nginx
El comando nginx -t es crítico: nunca recargues sin validar primero.
Añadir HTTPS con Let's Encrypt (Certbot)
Un sitio sin HTTPS no debe salir a producción. Certbot automatiza la obtención y renovación de certificados gratuitos.
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d tusitio.com -d www.tusitio.com
Certbot modificará tu bloque server para redirigir HTTP → HTTPS y añadir los certificados. La renovación automática ya viene configurada vía un timer systemd.
Verifica la renovación con:
sudo certbot renew --dry-run
Ajustes de rendimiento recomendados
| Directiva | Archivo | Valor recomendado | Efecto |
|---|---|---|---|
worker_processes |
nginx.conf | auto |
Un worker por núcleo CPU |
worker_connections |
nginx.conf | 1024 |
Conexiones por worker |
keepalive_timeout |
nginx.conf | 65 |
Reutilización de conexiones TCP |
gzip on |
nginx.conf | Habilitado | Compresión de respuestas texto |
server_tokens off |
nginx.conf | off | Oculta versión de Nginx (seguridad) |
Edita /etc/nginx/nginx.conf dentro del bloque http { } para aplicar estos valores, luego ejecuta sudo nginx -t && sudo systemctl reload nginx.
Conclusiones clave
- Nginx se instala con un solo comando APT y arranca de forma inmediata en Ubuntu y Debian.
- Los bloques server en
/etc/nginx/sites-available/son la unidad de configuración por dominio. - Siempre valida con
nginx -tantes de recargar para evitar interrupciones. - Certbot + Let's Encrypt provee HTTPS gratuito con renovación automática.
- Los ajustes de
worker_processes autoygzip onbastan para la mayoría de VPS de gama media.
¿Listo para llevar tu sitio al siguiente nivel? En elenlace.com te ayudamos a configurar, optimizar y securizar tu VPS para que tu proyecto crezca sin interrupciones.
Preguntas frecuentes
¿Nginx reemplaza a Apache o pueden coexistir?
Pueden coexistir en distintos puertos, pero en el mismo puerto 80/443 solo puede escuchar uno. Lo más común en VPS es elegir uno como servidor principal; Nginx como proxy inverso delante de Apache también es una opción válida pero añade complejidad innecesaria si empiezas de cero.
¿Cómo reinicio Nginx sin cortar el tráfico?
Usa sudo systemctl reload nginx en lugar de restart. El reload recarga la configuración sin cerrar las conexiones existentes, lo que evita downtime.
¿Puedo ejecutar PHP con Nginx?
Sí, pero Nginx no procesa PHP por sí mismo: necesitas PHP-FPM. Instala php-fpm y añade un bloque location ~ \.php$ en tu bloque server que pase las peticiones al socket Unix de FPM. Es la combinación más eficiente para WordPress y aplicaciones PHP en VPS.
¿Dónde están los logs de errores de Nginx?
El log de errores global está en /var/log/nginx/error.log. Si defines error_log en tu bloque server, tendrás un log por sitio, lo que facilita mucho el diagnóstico cuando administras varios dominios en el mismo VPS.
¿Prefieres que lo hagamos por ti? En El Enlace resolvemos hosting y desarrollo web profesional.
Recursos útiles
Otros proveedores y guías que vale la pena comparar: