Nginx

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
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

 module core