Nginx
| Fiche express | |
|---|---|
| Type | Serveur web / reverse proxy HTTP(S) |
| Auteur d'origine | Igor Sysoev (2004) |
| Licence | BSD-2-Clause (open source) |
| Fichier de conf | /etc/nginx/nginx.conf
|
| Voir aussi | Certbot · Proxy nginx · Securiser nginx · Mod security · Varnish-php-fpm-nginx |
Nginx (prononcé "engine-x") est un serveur web et reverse proxy HTTP(S), créé en 2004 par Igor Sysoev pour répondre au problème du "C10k" (dizaines de milliers de connexions simultanées). Contrairement au modèle historique d'Apache (un processus ou thread par connexion), Nginx repose sur une architecture événementiale asynchrone (un petit nombre de processus worker, chacun capable de gérer un grand nombre de connexions concurrentes), ce qui lui donne un avantage net en consommation mémoire sous forte charge, notamment comme reverse proxy ou serveur de fichiers statiques.
Installation
Sur une distribution basée RHEL/CentOS :
yum install nginx systemctl enable nginx systemctl start nginx
Tester la validité de la configuration avant tout rechargement (à faire systématiquement) :
nginx -t
Structure de configuration
Le fichier principal /etc/nginx/nginx.conf définit le contexte global et le bloc
http { }, qui inclut généralement les configurations de site :
include /etc/nginx/conf.d/*.conf;
Chaque site/vhost est décrit par un ou plusieurs blocs server { }, eux-mêmes
composés de blocs location { } qui déterminent comment traiter une URI donnée
(fichier statique, redirection, proxy vers une application...). Voir Proxy nginx pour des
exemples concrets de blocs server en reverse proxy.
TLS/SSL
Directives de base pour activer HTTPS sur un bloc server :
ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH";
Les versions TLSv1.0/TLSv1.1, historiquement citées dans d'anciennes configurations, sont aujourd'hui obsolètes et déconseillées (dépréciées par l'IETF depuis 2021) : ne conserver que TLSv1.2 et TLSv1.3.
Pour la génération/obtention des certificats eux-mêmes, voir Certbot (Let's Encrypt, automatisé) et Securiser nginx (génération manuelle, auto-signée ou via une autorité tierce).
Pour aller plus loin
- Proxy nginx — configuration reverse proxy détaillée
- Securiser nginx — durcissement TLS et génération de certificats
- Certbot — automatisation Let's Encrypt
- Mod security — pare-feu applicatif web (WAF) devant Nginx
- Varnish-php-fpm-nginx — architecture complète Nginx + cache + PHP-FPM
- https://nginx.org/en/docs/http/ngx_http_core_module.html — documentation officielle du
module core