Instalar Nginx en Debian 12 y Ubuntu 24.04 desde el repositorio oficial

7 min de lectura·Matthieu|

Instala Nginx desde el repositorio oficial nginx.org en Debian 12 o Ubuntu 24.04. Cubre la clave de firma, el pinning de apt, reglas de firewall para UFW y nftables, gestion con systemd y verificacion en cada paso.

Instalar Nginx en Debian 12 y Ubuntu 24.04 desde el repositorio oficial

Este tutorial instala Nginx desde el repositorio oficial nginx.org en un VPS con Debian 12 o Ubuntu 24.04. Obtienes la ultima version (1.28.2 stable o 1.29.6 mainline) en lugar del paquete desactualizado que trae tu distribucion. Cada paso incluye verificacion para que sepas exactamente que ocurrio.

Para entender donde encaja Nginx en tu pila de servidor, consulta Nginx Administration on a VPS.

Requisitos previos

Necesitas:

  • Un VPS con Debian 12 (Bookworm) o Ubuntu 24.04 (Noble Numbat)
  • Un usuario no root con privilegios sudo
  • Acceso SSH al servidor

Todos los comandos de este tutorial se ejecutan como usuario sudo. No como root.

Instalar Nginx stable o mainline?

Nginx mantiene dos ramas. Stable (numero de version par, actualmente 1.28.x) solo recibe correcciones criticas. Mainline (numero de version impar, actualmente 1.29.x) recibe todas las nuevas funcionalidades, correcciones de errores y parches de seguridad. El equipo de Nginx recomienda mainline para produccion. Stable existe para quienes prefieren cambios minimos entre actualizaciones.

Stable Mainline
Version actual 1.28.2 1.29.6
Frecuencia de actualizacion Solo correcciones criticas Cada 4-6 semanas
Nuevas funcionalidades No Si
Recomendado por nginx.org Para configuraciones conservadoras Para produccion

Este tutorial usa stable por defecto. Para instalar mainline, sustituye la URL del repositorio donde se indica.

Por que usar el repositorio oficial en lugar del paquete de la distribucion?

Los repositorios apt por defecto de Debian 12 y Ubuntu 24.04 traen Nginx 1.22.1 y 1.24.0, respectivamente. Estas versiones tienen meses o anos de retraso respecto a las versiones oficiales. El repositorio nginx.org te da la ultima version stable o mainline, mantenida por el equipo de Nginx.

Fuente Version Debian 12 Version Ubuntu 24.04 Mantenido por
Repositorio de la distribucion 1.22.1 1.24.0 Mantenedores del SO
nginx.org stable 1.28.2 1.28.2 Equipo Nginx
nginx.org mainline 1.29.6 1.29.6 Equipo Nginx

Como instalar Nginx en Debian 12 desde el repositorio oficial?

Instala los requisitos previos, anade la clave de firma de nginx.org, configura la fuente apt, fija el repositorio e instala. Tarda unos dos minutos.

Paso 1: Instalar los requisitos previos

sudo apt update
sudo apt install -y curl gnupg2 ca-certificates lsb-release debian-archive-keyring

Paso 2: Importar la clave de firma de nginx.org

curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
    | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Verifica la huella digital de la clave:

gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg

Atencion: la salida lista varias claves de firma. Busca esta huella digital entre ellas:

573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62

Si ninguna de las huellas digitales listadas coincide, elimina el archivo y descargalo de nuevo. Una clave que no coincide significa que la descarga fue interceptada o corrupta.

Paso 3: Anadir el repositorio apt

Para stable:

echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
https://nginx.org/packages/debian $(lsb_release -cs) nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

Para mainline, sustituye packages por packages/mainline:

echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
https://nginx.org/packages/mainline/debian $(lsb_release -cs) nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

Paso 4: Fijar el repositorio oficial

Esto asegura que apt prefiera el paquete de nginx.org sobre la version de la distribucion:

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

Sin fijar el repositorio, un futuro apt upgrade podria reemplazar el paquete oficial con la version antigua de la distribucion.

Paso 5: Instalar Nginx

sudo apt update
sudo apt install -y nginx

Paso 6: Iniciar y verificar la instalacion

nginx -v

Salida esperada para stable:

nginx version: nginx/1.28.2

El paquete de nginx.org no se inicia automaticamente tras la instalacion. Inicialo ahora:

sudo systemctl start nginx

Comprueba que el servicio esta corriendo:

sudo systemctl status nginx

Atencion: busca Active: active (running) en la salida.

Verifica que Nginx esta escuchando en el puerto 80:

ss -tlnp | grep :80

Salida esperada:

LISTEN 0      511          0.0.0.0:80        0.0.0.0:*    users:(("nginx",pid=...,fd=...))

Prueba la pagina de bienvenida:

curl -I http://localhost

Atencion: la respuesta debe incluir HTTP/1.1 200 OK y Server: nginx/1.28.2.

Como instalar Nginx en Ubuntu 24.04 desde el repositorio oficial?

El proceso es casi identico a Debian. Las unicas diferencias son el paquete de requisitos previos y la URL del repositorio.

Paso 1: Instalar los requisitos previos

sudo apt update
sudo apt install -y curl gnupg2 ca-certificates lsb-release ubuntu-keyring

Nota: Ubuntu usa ubuntu-keyring en lugar de debian-archive-keyring.

Paso 2: Importar la clave de firma de nginx.org

curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
    | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Verifica la huella digital (misma clave que Debian):

gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg

Busca 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 entre las claves listadas.

Paso 3: Anadir el repositorio apt

Para stable:

echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
https://nginx.org/packages/ubuntu $(lsb_release -cs) nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

Para mainline:

echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
https://nginx.org/packages/mainline/ubuntu $(lsb_release -cs) nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

Paso 4: Fijar el repositorio oficial

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

Paso 5: Instalar Nginx

sudo apt update
sudo apt install -y nginx

Paso 6: Iniciar y verificar la instalacion

Inicia Nginx (no se inicia automaticamente tras la instalacion):

sudo systemctl start nginx

Ejecuta las mismas verificaciones que en Debian:

nginx -v
sudo systemctl status nginx
ss -tlnp | grep :80
curl -I http://localhost

Deberias ver nginx/1.28.2 (stable) o nginx/1.29.6 (mainline) tanto en nginx -v como en las cabeceras de respuesta de curl.

Como gestionar Nginx con systemd?

Nginx incluye un archivo de unidad systemd. Estos son los comandos que usaras a diario.

Comando Que hace
sudo systemctl start nginx Iniciar Nginx
sudo systemctl stop nginx Detener Nginx
sudo systemctl restart nginx Detener e iniciar (corta conexiones)
sudo systemctl reload nginx Recargar configuracion sin cortar conexiones
sudo systemctl enable nginx Iniciar en el arranque
sudo systemctl disable nginx No iniciar en el arranque
sudo systemctl status nginx Mostrar estado y logs recientes

Reload vs restart: Usa reload tras cambios de configuracion. Aplica la nueva configuracion sin cortar las conexiones activas. Usa restart solo cuando hayas cambiado configuraciones a nivel de binario o actualizado Nginx. Reload es seguro. Restart corta todas las conexiones activas.

Habilita el inicio automatico de Nginx en el arranque:

sudo systemctl enable nginx

Siempre prueba tu configuracion antes de recargar:

sudo nginx -t

Salida esperada:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Si nginx -t reporta errores, corrigelos antes de recargar. Un reload fallido deja la configuracion anterior activa. Un restart fallido deja Nginx detenido.

Como configurar reglas de firewall UFW para Nginx?

UFW (Uncomplicated Firewall) es el frontend de firewall por defecto en Ubuntu. Esta disponible en Debian pero no instalado por defecto. Algunas imagenes VPS no incluyen UFW. Si ufw no se encuentra, instalalo primero:

sudo apt install -y ufw

El paquete de nginx.org no incluye perfiles de aplicacion UFW (Nginx Full, Nginx HTTP, Nginx HTTPS). Esos perfiles solo vienen con el paquete de la distribucion. Usa numeros de puerto en su lugar.

Permite SSH primero (para no quedarte fuera):

sudo ufw allow OpenSSH

Permite HTTP (80) y HTTPS (443):

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

Si solo necesitas HTTPS:

sudo ufw allow 443/tcp

Asegurate de que UFW este habilitado:

sudo ufw enable

Verifica las reglas:

sudo ufw status

La salida esperada incluye:

80/tcp                     ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere
80/tcp (v6)                ALLOW       Anywhere (v6)
443/tcp (v6)               ALLOW       Anywhere (v6)

Si ufw status muestra Status: inactive, ejecuta primero sudo ufw enable.

Como configurar reglas de firewall nftables para Nginx?

Debian 12 usa nftables como backend de firewall por defecto. Si gestionas las reglas directamente (sin UFW), anade los puertos de Nginx a tu configuracion de nftables.

Edita tu configuracion de nftables:

sudo nano /etc/nftables.conf

Anade estas reglas dentro de tu cadena input (dentro de tu tabla inet filter):

tcp dport { 80, 443 } accept

Una configuracion minima funcional se ve asi:

#!/usr/sbin/nft -f

flush ruleset

table inet filter {
    chain input {
        type filter hook input priority 0; policy drop;

        iif lo accept
        ct state established,related accept
        tcp dport 22 accept
        tcp dport { 80, 443 } accept
    }

    chain forward {
        type filter hook forward priority 0; policy drop;
    }

    chain output {
        type filter hook output priority 0; policy accept;
    }
}

Aplica las reglas:

sudo nft -f /etc/nftables.conf

Verifica:

sudo nft list ruleset

Atencion: busca tcp dport { 80, 443 } accept en la salida. Si no aparece, las reglas no se aplicaron.

Habilita nftables en el arranque:

sudo systemctl enable nftables

Como verificar que Nginx funciona correctamente?

Tras la instalacion y la configuracion del firewall, repasa esta lista de comprobacion.

Desde el servidor:

nginx -v
sudo systemctl status nginx
ss -tlnp | grep :80
curl -I http://localhost

Desde tu maquina local (sustituye YOUR_SERVER_IP):

curl -I http://YOUR_SERVER_IP

Cabeceras de respuesta esperadas:

HTTP/1.1 200 OK
Server: nginx/1.28.2

Si el curl externo expira pero localhost funciona, tu firewall esta bloqueando el puerto 80. Vuelve a la seccion de UFW o nftables de arriba.

Tambien puedes abrir http://YOUR_SERVER_IP en un navegador. Deberias ver la pagina "Welcome to nginx!".

Ubicaciones de archivos y directorios principales

Ruta Funcion
/etc/nginx/nginx.conf Archivo de configuracion principal
/etc/nginx/conf.d/ Archivos de configuracion adicionales (cargados por defecto)
/var/log/nginx/access.log Registro de acceso
/var/log/nginx/error.log Registro de errores
/usr/share/nginx/html/ Raiz de documentos por defecto

El paquete oficial de nginx.org usa /etc/nginx/conf.d/ para las configuraciones de sitios. Esto difiere del paquete de la distribucion, que usa sites-available/ y sites-enabled/. Ambos enfoques funcionan. El patron conf.d es mas simple.

Para aprender como estan organizados los archivos de configuracion de Nginx, consulta . Para alojar varios dominios en este servidor, consulta .

Copyright 2026 Virtua.Cloud. Todos los derechos reservados. Este contenido es una obra original del equipo de Virtua.Cloud. La reproduccion, republicacion o redistribucion sin permiso escrito esta prohibida.

¿Listo para probarlo?

Despliega tu propio servidor en segundos. Linux, Windows o FreeBSD.

Ver planes VPS