nginx

Un article de Wikipédia, l'encyclopédie libre.

NGINX
Développeur Igor Sysoev
Dernière version 0.7.2 (le 16 juin 2008)
Environnement Linux, Unix, Windows...
Type Serveur HTTP
Licence Licence de type BSD
Site web nginx.net

Nginx [engine x] est un serveur HTTP(S) écrit par Igor Sysoev, dont le développement a débuté en 2002 pour les besoins d'un site russe à très fort trafic. Une partie de la documentation a été traduite du russe vers l'anglais.

Ses sources sont disponibles sous une licence de type BSD.

Sommaire

[modifier] Particularités

[modifier] Serveur asynchrone

Nginx est un serveur asynchrone par opposition aux serveurs synchrones où chaque requête est traitée par un processus dédié. Au lieu d'exploiter une architecture parallèle et le multiplexage temporel des tâches par le système d'exploitation, Nginx utilise les changements d'états pour gérer plusieurs connexions en même temps ; le traitement de chaque requête est découpé en de nombreuses mini-tâches et permet ainsi de réaliser un multiplexage efficace entre les connexions. Afin de tirer parti des ordinateurs multi-processeurs, plusieurs processus peuvent être démarrés. Ce choix d'architecture se traduit par des performances très élevées mais également par une charge et une consommation de mémoire particulièrement faibles comparativement aux serveurs HTTP classiques tels qu'Apache.

[modifier] Modularité

Nginx est très modulaire : un noyau minimal et des modules, nombreux, venant compléter les fonctions de base. Chaque module peut agir comme un filtre sur le contenu en entrée, en sortie ou intermédiaire (proxy) par le biais de nombreuses callbacks. Ainsi, à titre d'exemple, un contenu dynamique peut être compressé à la volée par le module « gzip » avant envoi.

[modifier] Optimisations

Le noyau s'appuie sur des structures de données minimales mais optimales visant à réduire le nombre d'appels système, en particulier pour tout ce qui a trait à l'allocation de mémoire. Différents mécanismes de signalisation peuvent être utilisés afin d'exploiter au mieux le système d'exploitation (par exemple : epoll sous GNU/Linux et kqueue sous BSD). L'architecture asynchrone soulage l'ordonnanceur du système d'exploitation et favorise l'utilisation des caches du ou des processeurs.

[modifier] Divers

Un processus maître contrôle le ou les processus serveurs, de cette façon il est possible de changer la configuration ou de mettre à jour le fichier exécutable du serveur sans avoir à arrêter le service HTTP.

[modifier] Plate-formes supportées

Nginx fonctionne sous les systèmes d'exploitation GNU/Linux, BSD, Mac OS X et Solaris ; une version expérimentale (non maintenue par Igor Sysoev) existe pour Windows.

[modifier] Utilisations

Outre le fait d'être un serveur HTTP, Nginx peut être configuré pour être un proxy inverse web et un serveur proxy de messagerie électronique (IMAP / POP3). L'utilisation la plus fréquente de Nginx est de le configurer comme un serveur web classique pour servir des fichiers statiques et comme un proxy pour les requêtes dynamiques typiquement acheminées en utilisant une interface FastCGI vers un ou des serveurs applicatifs avec un mécanisme de répartition de charge.

[modifier] Popularité

Nginx était peu connu, excepté en Russie, avant qu'Aleksandar Lazic ne commence la traduction anglaise en 2006. Depuis, le nombre de domaines gérés par Nginx est en constante augmentation (environ deux millions de domaines en juin 2008 selon Netcraft) et place Nginx au rang de quatrième serveur HTTP, identifié, le plus utilisé au monde.

[modifier] Liens externes