Installer Nginx sur Debian 12 et Ubuntu 24.04 depuis le dépôt officiel

7 min de lecture·Matthieu·nginxdebianubuntuweb-serverfirewall|

Installez Nginx depuis le dépôt officiel nginx.org sur Debian 12 ou Ubuntu 24.04. Couvre la clé de signature, le pinning apt, les règles de pare-feu UFW et nftables, la gestion systemd et la

Ce tutoriel installe Nginx depuis le dépôt officiel nginx.org sur un VPS Debian 12 ou Ubuntu 24.04. Vous obtenez la dernière version (1.28.2 stable ou 1.29.6 mainline) au lieu du paquet obsolète fourni par votre distribution. Chaque étape inclut une vérification pour que vous sachiez exactement ce qui s'est passé.

Pour comprendre où Nginx s'intègre dans votre pile serveur, consultez Administration Nginx sur un VPS.

Prérequis

Vous avez besoin de :

  • Un VPS sous Debian 12 (Bookworm) ou Ubuntu 24.04 (Noble Numbat)
  • Un utilisateur non-root avec les privilèges sudo
  • Un accès SSH au serveur

Toutes les commandes de ce tutoriel s'exécutent en tant qu'utilisateur sudo. Pas root.

Faut-il installer Nginx stable ou mainline ?

Nginx maintient deux branches. Stable (numéro de version pair, actuellement 1.28.x) ne reçoit que les correctifs critiques. Mainline (numéro de version impair, actuellement 1.29.x) reçoit toutes les nouvelles fonctionnalités, corrections de bugs et correctifs de sécurité. L'équipe Nginx recommande mainline pour la production. Stable existe pour ceux qui veulent un minimum de changements entre les mises à jour.

Stable Mainline
Version actuelle 1.28.2 1.29.6
Fréquence de mise à jour Correctifs critiques uniquement Toutes les 4 à 6 semaines
Nouvelles fonctionnalités Non Oui
Recommandé par nginx.org Pour les configurations conservatrices Pour la production

Ce tutoriel utilise stable par défaut. Pour installer mainline à la place, remplacez l'URL du dépôt là où c'est indiqué.

Pourquoi utiliser le dépôt officiel plutôt que le paquet de la distribution ?

Les dépôts apt par défaut de Debian 12 et Ubuntu 24.04 fournissent respectivement Nginx 1.22.1 et 1.24.0. Ces versions ont des mois, voire des années de retard sur les versions officielles. Le dépôt nginx.org vous donne la dernière version stable ou mainline, maintenue par l'équipe Nginx.

Source Version Debian 12 Version Ubuntu 24.04 Maintenu par
Dépôt de la distribution 1.22.1 1.24.0 Mainteneurs de l'OS
nginx.org stable 1.28.2 1.28.2 Équipe Nginx
nginx.org mainline 1.29.6 1.29.6 Équipe Nginx

Comment installer Nginx sur Debian 12 depuis le dépôt officiel ?

Installez les prérequis, ajoutez la clé de signature nginx.org, configurez la source apt, épinglez le dépôt et installez. Cela prend environ deux minutes.

Étape 1 : Installer les prérequis

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

Étape 2 : Importer la clé de signature nginx.org

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

Confirmez l'empreinte de la clé :

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

Œil attentif : la sortie liste plusieurs clés de signature. Cherchez cette empreinte parmi elles :

573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62

Si aucune des empreintes listées ne correspond, supprimez le fichier et retéléchargez-le. Une clé qui ne correspond pas signifie que le téléchargement a été intercepté ou corrompu.

Étape 3 : Ajouter le dépôt apt

Pour 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

Pour mainline, remplacez packages par 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

Étape 4 : Épingler le dépôt officiel

Cela garantit qu'apt préfère le paquet nginx.org à la version de la distribution :

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

Sans épinglage, un futur apt upgrade pourrait remplacer le paquet officiel par l'ancienne version de la distribution.

Étape 5 : Installer Nginx

sudo apt update
sudo apt install -y nginx

Étape 6 : Démarrer et vérifier l'installation

nginx -v

Sortie attendue pour stable :

nginx version: nginx/1.28.2

Le paquet nginx.org ne démarre pas automatiquement après l'installation. Démarrez-le maintenant :

sudo systemctl start nginx

Confirmez que le service tourne :

sudo systemctl status nginx

Œil attentif : cherchez Active: active (running) dans la sortie.

Confirmez que Nginx écoute sur le port 80 :

ss -tlnp | grep :80

Sortie attendue :

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

Testez la page d'accueil :

curl -I http://localhost

Œil attentif : la réponse doit inclure HTTP/1.1 200 OK et Server: nginx/1.28.2.

Comment installer Nginx sur Ubuntu 24.04 depuis le dépôt officiel ?

La procédure est quasi identique à Debian. Les seules différences sont le paquet de prérequis et l'URL du dépôt.

Étape 1 : Installer les prérequis

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

Note : Ubuntu utilise ubuntu-keyring au lieu de debian-archive-keyring.

Étape 2 : Importer la clé de signature nginx.org

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

Contrôlez l'empreinte (même clé que Debian) :

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

Cherchez 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 parmi les clés listées.

Étape 3 : Ajouter le dépôt apt

Pour 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

Pour 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

Étape 4 : Épingler le dépôt officiel

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

Étape 5 : Installer Nginx

sudo apt update
sudo apt install -y nginx

Étape 6 : Démarrer et vérifier l'installation

Démarrez Nginx (il ne démarre pas automatiquement après l'installation) :

sudo systemctl start nginx

Exécutez les mêmes vérifications que pour Debian :

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

Vous devriez voir nginx/1.28.2 (stable) ou nginx/1.29.6 (mainline) dans nginx -v et dans les en-têtes de la réponse curl.

Comment gérer Nginx avec systemd ?

Nginx fournit un fichier d'unité systemd. Voici les commandes que vous utiliserez au quotidien.

Commande Ce qu'elle fait
sudo systemctl start nginx Démarrer Nginx
sudo systemctl stop nginx Arrêter Nginx
sudo systemctl restart nginx Arrêter puis redémarrer (coupe les connexions)
sudo systemctl reload nginx Recharger la configuration sans couper les connexions
sudo systemctl enable nginx Démarrer au boot
sudo systemctl disable nginx Ne pas démarrer au boot
sudo systemctl status nginx Afficher l'état et les logs récents

Reload vs restart : Utilisez reload après un changement de configuration. Il applique la nouvelle configuration sans couper les connexions actives. Utilisez restart uniquement quand vous avez modifié des paramètres au niveau binaire ou mis à jour Nginx. Reload est sûr. Restart coupe toutes les connexions actives.

Activez le démarrage automatique de Nginx au boot :

sudo systemctl enable nginx

Testez toujours votre configuration avant de recharger :

sudo nginx -t

Sortie attendue :

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

Si nginx -t signale des erreurs, corrigez-les avant de recharger. Un reload échoué laisse la configuration précédente active. Un restart échoué laisse Nginx arrêté.

Comment configurer les règles de pare-feu UFW pour Nginx ?

UFW (Uncomplicated Firewall) est le frontend pare-feu par défaut sur Ubuntu. Il est disponible sur Debian mais pas installé par défaut. Certaines images VPS sont livrées sans UFW. Si ufw n'est pas trouvé, installez-le d'abord :

sudo apt install -y ufw

Le paquet nginx.org n'inclut pas les profils d'application UFW (Nginx Full, Nginx HTTP, Nginx HTTPS). Ces profils ne sont fournis qu'avec le paquet de la distribution. Utilisez les numéros de port à la place.

Autorisez d'abord SSH (pour ne pas vous verrouiller dehors) :

sudo ufw allow OpenSSH

Autorisez HTTP (80) et HTTPS (443) :

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

Si vous n'avez besoin que de HTTPS :

sudo ufw allow 443/tcp

Assurez-vous qu'UFW est actif :

sudo ufw enable

Contrôlez les règles :

sudo ufw status

La sortie attendue inclut :

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

Si ufw status affiche Status: inactive, exécutez d'abord sudo ufw enable.

Comment configurer les règles de pare-feu nftables pour Nginx ?

Debian 12 utilise nftables comme backend de pare-feu par défaut. Si vous gérez les règles directement (sans UFW), ajoutez les ports Nginx à votre configuration nftables.

Éditez votre configuration nftables :

sudo nano /etc/nftables.conf

Ajoutez ces règles dans votre chaîne input (à l'intérieur de votre table inet filter) :

tcp dport { 80, 443 } accept

Une configuration minimale fonctionnelle ressemble à ceci :

#!/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;
    }
}

Appliquez les règles :

sudo nft -f /etc/nftables.conf

Confirmez :

sudo nft list ruleset

Œil attentif : cherchez tcp dport { 80, 443 } accept dans la sortie. Si c'est absent, les règles n'ont pas été appliquées.

Activez nftables au démarrage :

sudo systemctl enable nftables

Comment vérifier que Nginx fonctionne correctement ?

Après l'installation et la configuration du pare-feu, passez en revue cette checklist.

Depuis le serveur :

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

Depuis votre machine locale (remplacez YOUR_SERVER_IP) :

curl -I http://YOUR_SERVER_IP

En-têtes de réponse attendus :

HTTP/1.1 200 OK
Server: nginx/1.28.2

Si le curl externe expire mais que localhost fonctionne, votre pare-feu bloque le port 80. Revenez à la section UFW ou nftables ci-dessus.

Vous pouvez aussi ouvrir http://YOUR_SERVER_IP dans un navigateur. Vous devriez voir la page « Welcome to nginx! ».

Emplacements des fichiers et répertoires principaux

Chemin Fonction
/etc/nginx/nginx.conf Fichier de configuration principal
/etc/nginx/conf.d/ Fichiers de configuration supplémentaires (chargés par défaut)
/var/log/nginx/access.log Journal d'accès
/var/log/nginx/error.log Journal d'erreurs
/usr/share/nginx/html/ Racine documentaire par défaut

Le paquet officiel nginx.org utilise /etc/nginx/conf.d/ pour les configurations de sites. Cela diffère du paquet de la distribution, qui utilise sites-available/ et sites-enabled/. Les deux approches fonctionnent. Le modèle conf.d est plus simple.

Pour comprendre comment les fichiers de configuration Nginx sont organisés, consultez Structure des fichiers de configuration Nginx. Pour héberger plusieurs domaines sur ce serveur, consultez Nginx Server Blocks : héberger plusieurs domaines sur un VPS.