Installer Nginx sur Debian 12 et Ubuntu 24.04 depuis le dépôt officiel
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.
Prêt à essayer ?
Hebergez vos applications web sur un VPS fiable. →