Instale la última versión de Nginx

Aunque los repositorios predeterminados de Debian proporcionan una versión estable de Nginx, el uso del repositorio oficial de Nginx garantiza el acceso a las últimas funciones, actualizaciones de seguridad y mejoras de rendimiento tan pronto como se publican. Esta guía explica cómo instalar y configurar Nginx directamente desde el repositorio oficial en Debian 12 (Bookworm), lo que ayudará a mantener una configuración de servidor web moderna y segura.

Prerequisitos

  • Acceso root a un sistema Debian 12

  • Conocimientos básicos de la línea de comandos de Linux

  • Editor de texto de su elección

Pasos para la instalación

1. Actualizar los paquetes del sistema

En primer lugar, actualice la lista de paquetes de su sistema e instale las nuevas versiones si las hubiere:

apt update && apt upgrade -y

2. Instale las dependencias necesarias

Instale los paquetes necesarios para añadir el repositorio Nginx:

apt install curl wget gnupg2 ca-certificates lsb-release -y

3. Agregue el repositorio oficial de Nginx

Importe la clave de firma de Nginx y verifíquela:

wget -O- https://nginx.org/keys/nginx_signing.key | gpg --dearmor -o /etc/apt/trusted.gpg.d/nginx.gpg
gpg --dry-run --quiet --import --import-options import-show /etc/apt/trusted.gpg.d/nginx.gpg

Agregue el repositorio oficial de Nginx:

echo "deb http://nginx.org/packages/debian` lsb\_release -cs `nginx" > /etc/apt/sources.list.d/nginx.list

4. Establecer prioridad del repositorio

Cree un archivo de preferencias para asegurarse de que los paquetes se descarguen del repositorio Nginx.

echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" | sudo tee /etc/apt/preferences.d/99nginx

5. Instalar Nginx

Actualice la lista de paquetes e instale Nginx:

apt update
apt install nginx -y

6. Verificar la instalación

Verifique la versión de Nginx instalada:

nginx -v

7. Configurar los directorios del sistema

Cree los directorios necesarios con los permisos adecuados:

mkdir -p -m 0755 /var/www/html
chown -R www-data:www-data /var/www/html

mkdir /etc/nginx/{modules-available,modules-enabled,sites-available,sites-enabled,snippets}

8. Configurar encabezados de seguridad

Cree un fragmento de código para la configuración de los encabezados de seguridad:

cat > /etc/nginx/snippets/security-headers.conf << EOF
add_header X-Frame-Options "SAMEORIGIN";
add_header 'Referrer-Policy' 'strict-origin';
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff" always;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
add_header Content-Security-Policy "default-src https: data: 'unsafe-inline' 'unsafe-eval'" always;
add_header Permissions-Policy "accelerometer=(), camera=(), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), payment=(), usb=()";
EOF

9. Definir la configuración principal de Nginx

Crear una configuración base segura:

cat > /etc/nginx/nginx.conf <<EOF
user  www-data;
worker_processes  auto;
pid        /var/run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
    worker_connections  1024;
}
http {
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    types_hash_max_size 2048;

    include       snippets/security-headers.conf;

    server_tokens off;

    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;

    access_log  /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    gzip  on;

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}
EOF

10. Configurar el reinicio automático

Configure el reinicio automático de Nginx en caso de fallos:

mkdir -p /etc/systemd/system/nginx.service.d/
echo -e "[Service]\nRestart=always\nRestartSec=10s" > /etc/systemd/system/nginx.service.d/restart.conf
systemctl daemon-reload

11. Probar e iniciar Nginx

Pruebe la configuración e inicie el servicio:

nginx -t
systemctl enable nginx
systemctl start nginx

12. Verificar la instalación

Compruebe si Nginx funciona correctamente:

systemctl status nginx
curl http://127.0.0.1

Solución de problemas

Si recibe un error 403 Forbidden al acceder a la página predeterminada, compruebe:

  • Los permisos del directorio para /var/www/html

  • La configuración de SELinux, si está habilitada

  • Los permisos de usuario de Nginx

Gestión del servicio

Comandos comunes de administración de servicios:

systemctl start nginx    # Start Nginx
systemctl stop nginx    # Stop Nginx
systemctl restart nginx # Restart Nginx
systemctl status nginx  # Check status
nginx -t               # Test configuration

Consideraciones de seguridad

Esta configuración incluye:

  • Configuración SSL/TLS moderna

  • Encabezados de seguridad para la protección contra vulnerabilidades web comunes

  • Tokens de servidor desactivados para evitar la filtración de información sobre la versión

  • Capacidad de reinicio automático para una mayor confiabilidad

Siguientes pasos

Este tutorial ha cubierto la instalación y configuración básicas de Nginx utilizando el repositorio oficial. Para configuraciones más avanzadas, consulte los tutoriales relacionados:

  1. Configuración de bloques de servidor

  2. Implementación de certificados SSL/TLS

  3. Configuración de la limitación de velocidad

  4. Creación de un proxy reverso

  5. Páginas de error personalizadas

Cada uno de estos temas se tratará en detalle en artículos separados, lo que le ayudará a crear una infraestructura de servidor web robusta y segura.

Recuerde actualizar periódicamente su instalación de Nginx y supervisar los registros para detectar cualquier problema.

Pieter Bakker