🎨 Sysprovider Code
Sysprovider LogoWiki
🇪🇸Hosting español para ecommerce

Cómo instalar y configurar Nginx en un VPS con Linux

Actualizado el 11 de abril de 2026

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 luego sudo 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_name por 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!

¿Necesitas ayuda?Son dos de nuestros técnicos, Agustín y Mikel, y están disponibles para resolver cualquier problema.

Hablar con ellos ahora
Agustín y Mikel