Installer Nginx sur Debian

3 min de lecture07 novembre 2026

Nginx sert des fichiers statiques et relaie les requêtes vers une application. C'est souvent le premier paquet installé sur un VPS, et aussi la première source de confusion : un service actif ne signifie pas qu'il est joignable de l'extérieur. Cette procédure couvre l'installation, le test local, le pare-feu et la vérification depuis Internet, en IPv6 comme en IPv4.

Installer et démarrer

Bash
sudo apt update
sudo apt install nginx
sudo systemctl status nginx
sudo systemctl is-enabled nginx

Le paquet Debian installe, démarre et active le service automatiquement. status doit afficher active (running). Si le service échoue, sudo nginx -t valide la configuration et journalctl -u nginx -n 50 donne la cause.

Les fichiers utiles :

  • /etc/nginx/nginx.conf : configuration principale.
  • /etc/nginx/sites-available/ : blocs de sites disponibles.
  • /etc/nginx/sites-enabled/ : liens vers les sites actifs.
  • /var/www/html/ : racine de la page par défaut.
  • /var/log/nginx/access.log et error.log : journaux.

Tester localement

Bash
curl -I http://127.0.0.1
curl -I http://[::1]
sudo ss -ltnp | grep ':80 '

Vous devez obtenir HTTP/1.1 200 OK ou une redirection, et voir Nginx écouter sur le port 80 en IPv4 et IPv6. La configuration par défaut de Debian contient listen 80 default_server; et listen [::]:80 default_server;. Si seul IPv4 répond, vérifiez que la ligne IPv6 n'a pas été supprimée.

curl en local contourne le pare-feu : un succès local ne prouve pas que le port est ouvert depuis l'extérieur.

Ouvrir le pare-feu

Avec UFW :

Bash
sudo ufw allow 'Nginx Full'
sudo ufw status

L'application Nginx Full ouvre 80 et 443. Si vous n'utilisez pas encore HTTPS, sudo ufw allow 'Nginx HTTP' suffit. Vérifiez les profils disponibles avec sudo ufw app list.

Ouvrez le pare-feu avant de tester depuis l'extérieur, sinon vous ne saurez pas si l'échec vient du filtrage ou de Nginx. Gardez SSH autorisé pendant toute modification.

Vérifier depuis l'extérieur

Récupérez l'adresse IPv6 publique :

Bash
ip -6 addr show scope global

Puis, depuis une autre machine :

Bash
curl -6 -I http://[VOTRE_IPV6]
curl -4 -I http://VOTRE_IPV4

Un timeout indique un pare-feu ou une absence d'IPv4 dédiée. Un 502 n'a pas de sens ici : sans configuration applicative, Nginx sert la page par défaut. Consultez access.log pour confirmer que la requête arrive, et error.log pour les erreurs de configuration.

  • Ne remplacez pas la page par défaut par un fichier déposé hors de /var/www/html sans adapter la racine.
  • Ne passez jamais la racine web en 777 : Nginx a besoin de lire, pas d'écrire.
  • Rechargez avec sudo nginx -t && sudo systemctl reload nginx après chaque modification.
  • Gardez Nginx à jour et vérifiez la rotation des journaux.

Vérifier

Bash
sudo nginx -t
systemctl is-active nginx
curl -sI http://localhost | head -1

nginx -t doit répondre syntax is ok et test is successful. Si le test échoue, corrigez la ligne signalée avant de recharger : un rechargement avec une configuration invalide laisse l'ancienne version active, mais l'erreur reviendra au prochain redémarrage.

Publicité

Cet article vous a-t-il aidé ?

À lire aussi