Cómo instalar y configurar Nginx como servidor web en Linux

Introducción

Nginx (pronunciado "engine-x") es un servidor web de alto rendimiento, proxy inverso y balanceador de carga. Es conocido por su bajo consumo de memoria y su capacidad para manejar un gran número de conexiones simultáneas, lo que lo convierte en uno de los servidores web más populares del mundo.

Requisitos previos

  • Un VPS Linux con Ubuntu 22.04/24.04 o Debian 12 (las instrucciones son similares para otras distribuciones)
  • Acceso root o sudo
  • Un nombre de dominio apuntando a su servidor (opcional, para hosts virtuales)

Paso 1: Instalar Nginx

sudo apt update
sudo apt install nginx -y

Verifique la instalación:

nginx -v

Paso 2: Iniciar y habilitar Nginx

sudo systemctl start nginx
sudo systemctl enable nginx

Verifique el estado:

sudo systemctl status nginx

Abra su navegador y navegue a http://ip-de-su-servidor. Debería ver la página de bienvenida predeterminada de Nginx.

Paso 3: Permitir Nginx a través del firewall

Si UFW está habilitado:

sudo ufw allow 'Nginx Full'

Esto permite tráfico HTTP (80) y HTTPS (443).

Paso 4: Estructura de directorios

Ruta Propósito
/etc/nginx/nginx.conf Archivo de configuración principal
/etc/nginx/sites-available/ Archivos de configuración de hosts virtuales
/etc/nginx/sites-enabled/ Enlaces simbólicos a hosts virtuales activos
/var/www/html/ Directorio raíz web predeterminado
/var/log/nginx/access.log Registro de accesos
/var/log/nginx/error.log Registro de errores

Paso 5: Crear un host virtual (server block)

Cree un nuevo archivo de configuración para su dominio:

sudo nano /etc/nginx/sites-available/sudominio.com

Agregue la siguiente configuración:

server {
    listen 80;
    listen [::]:80;

    server_name sudominio.com www.sudominio.com;
    root /var/www/sudominio.com;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

    access_log /var/log/nginx/sudominio.com.access.log;
    error_log /var/log/nginx/sudominio.com.error.log;
}

Paso 6: Configurar el directorio raíz web

sudo mkdir -p /var/www/sudominio.com
sudo chown -R www-data:www-data /var/www/sudominio.com

Cree una página de prueba:

echo "<h1>Hola desde sudominio.com</h1>" | sudo tee /var/www/sudominio.com/index.html

Paso 7: Habilitar el host virtual

sudo ln -s /etc/nginx/sites-available/sudominio.com /etc/nginx/sites-enabled/

Pruebe la configuración en busca de errores de sintaxis:

sudo nginx -t

Si la prueba es exitosa, recargue Nginx:

sudo systemctl reload nginx

Paso 8: Habilitar HTTPS con Let's Encrypt

Instale Certbot:

sudo apt install certbot python3-certbot-nginx -y

Obtenga e instale un certificado:

sudo certbot --nginx -d sudominio.com -d www.sudominio.com

Certbot modificará automáticamente su configuración de Nginx para usar HTTPS y configurará la renovación automática.

Verifique que la renovación automática esté configurada:

sudo certbot renew --dry-run

Comandos útiles de Nginx

Comando Descripción
sudo systemctl restart nginx Reiniciar Nginx
sudo systemctl reload nginx Recargar configuración sin tiempo de inactividad
sudo nginx -t Probar la configuración en busca de errores
sudo tail -f /var/log/nginx/error.log Monitorear el registro de errores en tiempo real