Aller au contenu principal

nginx — Serveur web / reverse proxy

nginx est un serveur web et reverse proxy événementiel (architecture asynchrone, un petit nombre de workers pour un très grand nombre de connexions). Utilisé aussi bien pour servir du contenu statique que comme reverse proxy/load balancer devant des applications (PHP-FPM, Node.js, Gunicorn...).

Installation

sudo apt install nginx # Debian/Ubuntu
sudo dnf install nginx # RHEL/Fedora
sudo systemctl enable --now nginx

Fichiers de configuration

CheminRôle
/etc/nginx/nginx.confConfiguration principale (contexte http {}, includes)
/etc/nginx/sites-available/ + sites-enabled/Vhosts (Debian/Ubuntu, activés par symlink)
/etc/nginx/conf.d/Vhosts (RHEL, chargés automatiquement)
/var/log/nginx/access.log / error.logLogs

Commandes utiles

sudo nginx -t # Vérifier la syntaxe avant de recharger
sudo systemctl reload nginx # Recharger sans couper les connexions actives
sudo systemctl status nginx
nginx -V # Modules compilés

Exemple de configuration

server {
listen 80;
server_name exemple.fr;

location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}

Sécurisation

  • Toujours nginx -t avant reload en production — une erreur de syntaxe non testée peut couper le service au prochain redémarrage.
  • Terminer le TLS ici avec des paramètres modernes (ssl_protocols TLSv1.2 TLSv1.3), voir Certbot/Let's Encrypt.
  • server_tokens off; pour ne pas divulguer la version dans les en-têtes.
  • Limiter les requêtes (limit_req_zone) contre le bruteforce/DoS applicatif.
  • Ajouter les en-têtes de sécurité (X-Content-Type-Options, X-Frame-Options, Content-Security-Policy).
  • Exécution sous un utilisateur dédié non-root (user www-data;), workers uniquement en écoute sur les ports nécessaires.

Logs & dépannage

tail -f /var/log/nginx/error.log
journalctl -u nginx -f
sudo nginx -t # Diagnostiquer une erreur de config

Voir aussi

  • HAProxy et Traefik — alternatives reverse proxy/load balancer
  • Varnish — souvent placé devant nginx comme cache HTTP
  • PHP-FPM — backend applicatif courant derrière nginx