Cómo instalar y configurar Nginx en un VPS con Linux
Antes de empezar: ¿Qué es Nginx y por qué usarlo en tu VPS?
Nginx es uno de los servidores web más potentes, ligeros y eficientes que existen hoy en día. Si tienes un VPS (Servidor Privado Virtual) con Linux, instalar Nginx te permitirá servir páginas web a gran velocidad, incluso con mucho tráfico.
A diferencia de Apache, Nginx maneja miles de conexiones simultáneas usando muy poca memoria. Esto lo convierte en la opción favorita para sitios modernos, aplicaciones web y proxies inversos.
En esta guía completa, paso a paso, aprenderás a instalar nginx, configurar nginx y dejarlo funcionando de forma segura y optimizada en tu vps nginx. No necesitas ser un experto, solo seguir las instrucciones con calma.
Requisitos previos para tu VPS con Linux
Antes de comenzar, asegúrate de tener lo siguiente:
- Un VPS con cualquier distribución de Linux (Ubuntu, Debian, CentOS, AlmaLinux, etc.). Los ejemplos usarán comandos de Ubuntu/Debian, pero al final te doy las variantes para otras distribuciones.
- Acceso SSH al servidor (usuario con permisos de
sudo). - Un dominio apuntando al IP de tu VPS (opcional, pero recomendado para pruebas reales).
[INFO] Si no tienes un dominio, puedes usar la IP pública de tu VPS para las pruebas. Nginx funcionará igual, solo que no podrás usar certificados SSL automáticos con Let's Encrypt.
Paso 1: Actualizar el sistema operativo
Siempre es buena práctica actualizar los paquetes antes de instalar cualquier cosa. Conéctate por SSH y ejecuta:
sudo apt update && sudo apt upgrade -y
Este comando actualiza la lista de paquetes y actualiza los ya instalados. Si tu sistema usa yum o dnf (CentOS, AlmaLinux, Rocky Linux), el equivalente sería:
sudo dnf update -y
[TIP] Actualizar el sistema evita conflictos de dependencias y vulnerabilidades de seguridad.
Paso 2: Instalar Nginx en Linux
Ahora sí, vamos a instalar nginx. En Ubuntu y Debian, el paquete está en los repositorios oficiales, así que es muy sencillo:
sudo apt install nginx -y
En distribuciones basadas en Red Hat (CentOS, AlmaLinux, Rocky Linux):
sudo dnf install nginx -y
Una vez instalado, inicia el servicio y habilítalo para que arranque automáticamente al encender el VPS:
sudo systemctl start nginx
sudo systemctl enable nginx
Para verificar que el servicio está activo y funcionando:
sudo systemctl status nginx
Deberías ver un mensaje que dice active (running).
Ahora, abre tu navegador y escribe la IP de tu VPS (o localhost si estás en una máquina local). Deberías ver la página de bienvenida predeterminada de Nginx. ¡Felicidades, ya tienes un nginx servidor web funcionando!
[WARNING] Si no ves la página, revisa que el puerto 80 esté abierto en el firewall. En Ubuntu, usa:
sudo ufw allow 'Nginx HTTP'y luegosudo ufw enable.
Paso 3: Estructura de archivos de Nginx
Antes de configurar nginx, es fundamental entender cómo está organizado. Nginx usa un sistema de archivos de configuración muy ordenado:
/etc/nginx/nginx.conf→ Archivo principal de configuración./etc/nginx/sites-available/→ Directorio con los sitios disponibles (virtual hosts)./etc/nginx/sites-enabled/→ Enlaces simbólicos a los sitios activos./var/www/html/→ Directorio raíz por defecto para los archivos del sitio web./var/log/nginx/→ Logs de acceso y errores.
La lógica es simple: creas un archivo en sites-available, luego creas un enlace simbólico en sites-enabled para activarlo. Esto permite tener varios sitios en el mismo VPS.
Paso 4: Crear un sitio básico en Nginx
Vamos a crear un sitio web sencillo para probar la configuración. Primero, crea el directorio para tu sitio:
sudo mkdir -p /var/www/mi-sitio/html
Dale permisos adecuados al usuario actual (para que puedas subir archivos sin problemas):
sudo chown -R $USER:$USER /var/www/mi-sitio/html
Ahora crea un archivo index.html de prueba:
sudo nano /var/www/mi-sitio/html/index.html
Pega este contenido básico:
<!DOCTYPE html>
<html>
<head>
<title>Mi primer sitio con Nginx</title>
</head>
<body>
<h1>¡Hola Mundo desde Nginx!</h1>
<p>Este sitio se sirve desde un VPS con Linux.</p>
</body>
</html>
Guarda y cierra el archivo (en nano: Ctrl+O, luego Enter, luego Ctrl+X).
Paso 5: Configurar un Virtual Host (Server Block)
Ahora viene la parte clave de configurar nginx: crear el bloque de servidor. Vamos a crear un archivo de configuración para nuestro sitio:
sudo nano /etc/nginx/sites-available/mi-sitio
Pega la siguiente configuración básica:
server {
listen 80;
listen [::]:80;
server_name mi-dominio.com www.mi-dominio.com;
root /var/www/mi-sitio/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
[TIP] Si no tienes dominio, reemplaza
server_namepor la IP de tu VPS o por_(comodín que acepta cualquier nombre).
Activa el sitio creando un enlace simbólico:
sudo ln -s /etc/nginx/sites-available/mi-sitio /etc/nginx/sites-enabled/
Para evitar conflictos, elimina el sitio por defecto:
sudo rm /etc/nginx/sites-enabled/default
Ahora prueba que la configuración sea correcta:
sudo nginx -t
Si todo está bien, verás un mensaje como syntax is ok y test is successful. Ahora recarga Nginx para aplicar los cambios:
sudo systemctl reload nginx
Visita tu dominio o IP en el navegador y deberías ver tu página personalizada.
Paso 6: Configurar PHP-FPM en Nginx (para sitios dinámicos)
Si quieres servir aplicaciones PHP (como WordPress), necesitas instalar PHP-FPM. Primero instálalo:
sudo apt install php-fpm php-mysql -y
Ahora modifica tu archivo de configuración del sitio para que procese archivos PHP:
sudo nano /etc/nginx/sites-available/mi-sitio
Reemplaza la configuración con esta versión mejorada:
server {
listen 80;
listen [::]:80;
server_name mi-dominio.com www.mi-dominio.com;
root /var/www/mi-sitio/html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
[WARNING] La ruta del socket PHP-FPM puede variar según la versión de PHP instalada. Verifica con:
ls /var/run/php/. Si tienes PHP 8.2, el archivo seráphp8.2-fpm.sock.
Recarga Nginx:
sudo systemctl reload nginx
Para probar, crea un archivo info.php en tu directorio raíz:
echo "<?php phpinfo(); ?>" > /var/www/mi-sitio/html/info.php
Visita http://tu-dominio/info.php. Deberías ver la página de información de PHP. No olvides eliminar este archivo después por seguridad.
Paso 7: Configurar SSL/HTTPS con Let's Encrypt
Hoy en día, tener HTTPS es imprescindible. Vamos a instalar Certbot para obtener certificados SSL gratuitos:
sudo apt install certbot python3-certbot-nginx -y
Ejecuta Certbot para que configure automáticamente SSL en tu sitio:
sudo certbot --nginx -d mi-dominio.com -d www.mi-dominio.com
Certbot modificará automáticamente tu configuración de Nginx, instalará el certificado y configurará la redirección de HTTP a HTTPS.
[INFO] Necesitas tener el dominio apuntando a la IP de tu VPS para que Let's Encrypt pueda validar la propiedad.
Para renovar certificados automáticamente (válidos por 90 días), añade un cron job:
echo "0 3 * * * /usr/bin/certbot renew --quiet" | sudo tee -a /etc/crontab
Paso 8: Optimizaciones básicas de rendimiento
Para que tu nginx servidor web rinda al máximo, aplica estas optimizaciones en el archivo /etc/nginx/nginx.conf:
sudo nano /etc/nginx/nginx.conf
Encuentra la sección events y modifica worker_connections:
events {
worker_connections 2048;
multi_accept on;
use epoll;
}
En la sección http, agrega estas líneas para mejorar la compresión y el caché:
http {
# ... configuración existente ...
gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_types text/plain text/css text/xml text/javascript application/javascript application/xml+rss application/json;
keepalive_timeout 65;
client_max_body_size 20M;
}
Guarda, prueba la configuración y recarga:
sudo nginx -t
sudo systemctl reload nginx
Paso 9: Configurar el firewall y la seguridad básica
Si usas UFW en Ubuntu, asegúrate de permitir el tráfico necesario:
sudo ufw allow 'Nginx Full'
sudo ufw enable
Esto permite puertos 80 y 443. Para mayor seguridad, puedes limitar el acceso SSH al puerto 22:
sudo ufw allow OpenSSH
Paso 10: Solución de problemas comunes
No puedo conectarme al servidor web
Revisa el firewall, el estado del servicio y que el puerto esté escuchando:
sudo systemctl status nginx
sudo netstat -tulpn | grep :80
Error 403 Forbidden
Suele ser un problema de permisos. Asegúrate de que el usuario de Nginx (www-data) tenga acceso al directorio:
sudo chown -R www-data:www-data /var/www/mi-sitio/html
El sitio muestra la página por defecto
Revisa que el enlace simbólico en sites-enabled apunte al archivo correcto y que el server_name coincida con tu dominio.
Preguntas frecuentes (FAQ)
¿Nginx es mejor que Apache?
Depende del caso de uso. Nginx es más eficiente con archivos estáticos y conexiones concurrentes, mientras que Apache tiene más módulos dinámicos. Para la mayoría de proyectos modernos, nginx linux es la mejor opción.
¿Puedo tener varios sitios en un solo VPS?
Sí, absolutamente. Solo crea múltiples archivos en sites-available y activa los que necesites. Asegúrate de que cada uno tenga un server_name único.
¿Cómo reinicio Nginx?
Usa sudo systemctl restart nginx para reiniciar completamente o sudo systemctl reload nginx para aplicar cambios sin cortar conexiones.
¿Dónde están los logs?
Los logs de acceso están en /var/log/nginx/access.log y los de error en /var/log/nginx/error.log. Puedes verlos en tiempo real con tail -f.
¿Qué es un proxy inverso?
Nginx puede actuar como intermediario entre internet y tus aplicaciones (como Node.js o Python). Esto es avanzado, pero Nginx lo hace de maravilla.
¿Puedo usar Syspanel para gestionar Nginx?
Si prefieres una interfaz gráfica, Syspanel (antes conocido como HestiaCP) es una excelente opción. Incluye Nginx preinstalado y puedes acceder a su panel de control en el puerto 2106. Es ideal si no te sientes cómodo con la línea de comandos.
[INFO] Syspanel simplifica enormemente la gestión de sitios web, bases de datos y correos. Solo recuerda: el puerto de acceso es el 2106.
Conclusión
Instalar y configurar Nginx en un VPS con Linux no es complicado si sigues los pasos correctos. Con esta guía, ya tienes un nginx servidor web funcionando, con soporte para PHP, SSL y optimizaciones básicas.
Recuerda que Nginx es extremadamente configurable. A medida que ganes experiencia, podrás implementar caché avanzado, balanceo de carga, proxies inversos y mucho más.
Si te ha quedado alguna duda, revisa la documentación oficial o consulta la comunidad. ¡Tu VPS está listo para servir contenido de forma rápida y segura!
