X
NGINX, le serveur web aux dizaines de milliers de connexions
Thierry Thaureaux / jeudi 14 septembre 2017 / Thèmes: Développement, Dossier

NGINX, le serveur web aux dizaines de milliers de connexions

Le serveur web «nginx» est une plate-forme de distribution d’applications qui répond aux besoins d’un Internet moderne, nécessitant rapidité et multiplicité des connexions. Nous allons voir quels sont ses avantages par rapport à ses « concurrents ». Article paru dans le n°158 de L'Informaticien.

Nginx est un logiciel libre de serveur web ainsi qu’un proxy inverse écrit par un certain Igor Sysoev. Son développement a débuté en 2002 pour les besoins spécifiques d’un site russe à très fort trafic (www.rambler.ru). Sa documentation a été traduite du russe vers l’anglais. Les sources de nginx sont disponibles sous licence BSD. Depuis son lancement officiel en 2004, nginx s’est concentré sur les performances élevées, la concurrence massive et l’utilisation a minima des ressources mémoire. Les fonctionnalités qui le caractérisent sont la répartition de charge (load balancing), la mise en cache, l’accès et le contrôle de bande passante ainsi que la capacité à intégrer efficacement une grande diversité d’applications, ce qui l’a vite popularisé dans le monde de l’architecture des sites web modernes.

Principe de fonctionnement du worker process de nginx.

Architecture générale de nginx (source : http://www.aosabook.org/en/nginx.html)

Une popularité croissante

La popularité de nginx s’appuie sur sa faible consommation de mémoire et son efficacité éprouvée pour gérer du contenu statique. Il est le plus souvent utilisé pour gérer le contenu statique et relayer le contenu dynamique à un autre service, comme Apache ou Lighttpd. Nginx était peu connu, excepté en Russie, avant que Aleksandar Lazic ne commence la traduction anglaise en 2006. Depuis, le nombre de domaines gérés par nginx est en constante augmentat ion. En 2016, nginx était utilisé sur 17 % des sites actifs, contre 49 % pour Apache, 10 % pour IIS et un peu moins de 8 % pour Google. Il totalisait plus de 25 % des sites les plus visités, en augmentation constante derrière Apache à 45 % et IIS à 11 %. Nginx serait utilisé par plus de 300 millions de sites à travers le monde, y compris par plus de la moitié des 100 000 sites générant le plus de trafic au monde. À en croire la dernière enquête de Netcraft, du mois de mars, sur les serveurs web, la croissance de nginx devrait tellement s’accélérer en 2017 qu’il pourrait surpasser Microsoft et prendre la deuxième place d’ici à la fin de l’année.

Choisir entre Apache et nginx ?

Apache et nginx sont les deux serveurs web open source parmi les plus utilisés au monde. Ils traitent à eux deux près de la moitié du trafic internet. Le serveur web Apache a été créé en 1995. Le projet a été placé en 1999 sous la responsabilité de la fondation éponyme, l’Apache Software Foundation. C’est sans doute le serveur web le plus populaire, et cela dure depuis 1996. Il est flexible, puissant, très bien documenté et de nombreux projets intègrent ses standards, ce qui en fait un choix privilégié pour les administrateurs. Il peut interpréter directement un grand nombre de langages, sans l’apport d’outils externes. Nginx se distingue d’Apache et des autres serveurs web sur différents points. Tout d’abord, ses performances : il peut gérer plus de connexions concurrentes et d’utilisateurs actifs avec les mêmes ressources matérielles. Son architecture légère et efficace offre une bonne gestion du load-balancing, consommant peu de ressources et assurant une montée en performance plus simple. Il est très sécurisé : son code est robuste et fiable, comme son support technique, et les mises à jour logicielles sont régulières, tant pour la version commerciale que pour la « community ».

Le serveur HTTP Apache est une plate-forme solide adaptée à la plupart des technologies web développées ces vingt dernières années, mais le temps a montré que les choix d’architecture réalisés lorsque le code a été initialement créé sont devenus des facteurs pénalisants ou au moins limitatifs pour les besoins du Web moderne. Nginx a été écrit spécifiquement pour dépasser les limitations en termes de performances des serveurs web tels que Apache. Il peut être déployé comme un serveur web autonome, comme proxy front-end pour un serveur Apache ou autre en tenant le rôle « d’absorbeur de choc », protégeant les serveurs vulnérables de pics de trafic et d’attaques DOS ou DDOS de type slow connection (connexion lente) comme Slowloris ou slowhttprequest. Nginx est surtout fait pour du contenu statique, alors que Apache gère mieux les pages dynamiques. L’un est plus rapide pour des sites simples, l’autre offre davantage de possibilités permet pas d’utiliser des fichiers de type .htaccess. Le choix entre les deux doit se faire en fonction de vos besoins, pas de la mode du moment. Apache peut convenir dans presque tous les cas de figure. Nginx quant à lui conviendra pour les sites avec peu de contenu dynamique, de type WordPress, mais nécessitant un grand nombre de connexions simultanées. L’association des deux sera optimale pour des sites mélangeant contenu statique et dynamique et un grand nombre de connexions. D’après Owen Garrett, chef produit chez nginx, « Apache a toujours sa place. De nombreuses applications dépendent de modules binaires Apache ou qui utilisent une configuration .htaccess. Elles doivent être exécutées sur Apache. »

Configuration

Avec nginx, chaque application web nécessite une configuration spécifique différente. Pour la gestion des scripts PHP, par exemple, les paramètres fastcgi_ param ne sont pas les mêmes d’une application à l’autre. Pas moyen, du coup, de préparer et d’externaliser la configuration PHP dans un fichier à inclure dans chaque hôte virtuel. Toutes les règles de configuration pour Apache disponibles dans les fichiers .htaccess doivent être réécrites pour nginx. Il faut néanmoins relativiser ce problème : il est toujours complexe de maintenir une configuration cohérente et efficace pour un serveur hébergeant des applications de types divers. Toujours d’après Owen, « comparés point par point, le langage de configuration est, de manière significative, plus simple et plus facile à comprendre que le langage de configuration d’Apache. La question la plus importante avec Apache est la configuration .htaccess. Cette fonctionnalité puissante signifie que les utilisateurs finaux peuvent mettre à jour la configuration Apache, mais comporte aussi des inconvénients. Les fichiers .htaccess, notamment, posent un problème de performance important, car Apache doit les vérifier dans chaque répertoire et sous-répertoire, et ce pour chaque requête. »

Dans la première version des modules dynamiques, vous avez toujours besoin de compiler les modules Nginx optionnels en même temps que les Nginx binaires, mais vous créez également un objet partagé distinct pour chaque module chargé de manière dynamique et vous utilisez une directive dans le fichier de configuration Nginx pour activer et désactiver les chargements des objets partagés au démarrage.

Serveur asynchrone et performances

Là où de nombreux serveurs web et serveurs d’application utilisent une architecture simple à base de threads ou de processus, nginx arrive lui avec une architecture sophistiquée pilotée par les événements qui lui permettent de gérer la montée en charge de plusieurs centaines à des dizaines de milliers de connexions concurrentes. Il peut gérer des connexions multiples dans un seul processus grâce à son système d’événements. 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 un multiplexage temporel des tâches par le système d’exploitation, nginx utilise les changements d’état pour gérer des connexions en parallèle. Le traitement de chaque requête est découpé en de nombreuses petites tâches, ce qui permet de réaliser un multiplexage efficace entre les connexions et ainsi d’en gérer un plus grand nombre. Ce choix d’architecture a le double avantage d’offrir des performances très élevées, ainsi qu’une charge et une consommation mémoire très faibles comparativement à Apache ou aux autres serveurs web. Le noyau s’appuie sur des structures de données minimales, mais optimales, visant à réduire le nombre d’appels système, et ce pour tout ce qui a trait à l’allocation de mémoire. Divers mécanismes de signalisation peuvent être utilisés afin d’exploiter au mieux le système d’exploitation, comme kqueue sous BSD ou epoll sous Linux. L’architecture asynchrone soulage l’ordonnanceur du système d’exploitation et favorise l’utilisation des caches et des processeurs. Un processus maître contrôle le ou les processus serveurs. Il est possible de changer la configuration ou de mettre à jour le fichier exécutable du serveur sans avoir à arrêter le service HTTP.

Compatibilité et modularité

Nginx fonctionne sous les systèmes d’exploitation GNU/Linux, BSD, Mac OS X et Solaris. Il est disponible pour Microsoft Windows à partir de la version 0.7.52. Nginx est très modulaire. Le noyau est ultra-minimaliste et de nombreux modules viennent compléter ses fonctions de base. Chaque module peut agir comme un filtre sur le contenu en entrée, en sortie ou intermédiaire (proxy) via de nombreux callbacks. Un contenu dynamique peut être compressé à la volée par le module gzip avant d’être envoyé. Ces modules sont liés au serveur lors de la compilation. Les modules sont écrits en C et compilés pour nginx, un peu de la même manière que pour l’architecture modulaire d’Apache. Nginx supporte les bibliothèques dynamiques partagées (.so) depuis février 2016.


Les différentes utilisations de nginx

Outre le fait d’être un serveur HTTP, nginx peut être configuré pour être un reverse proxy (proxy inverse) web afin de réduire le temps de traitement des requêtes et/ou un serveur proxy de messagerie électronique. L’utilisation la plus fréquente de nginx est de le configurer comme un serveur web classique pour gérer des fichiers statiques et comme un proxy pour les requêtes dynamiques acheminées via une interface FastCGI vers un ou des serveurs applicatifs avec un mécanisme de répartition de charge. Il peut aussi servir de front-end pour un serveur Apache si ce dernier est utilisé en tant que serveur d’applications principal. Dans les faits, comme Apache est un peu trop généraliste, des serveurs d’application dédiés plus efficaces car plus spécialisés le remplacent de plus en plus souvent : le framework django pour Python, les différents serveurs Rack et Rails pour Ruby ou node.js pour les applications JavaScript. Nginx est aussi très utilisé en production pour servir des applications en Ruby on Rails grâce au module Phusion Passenger. La plupart des sites à fort trafic en Ruby on Rails, tels que basecamp ou LinuxFr.org, l’utilisent.


L’offre commerciale de nginx

La société nginx, en plus de supporter et de maintenir le projet open source éponyme, propose une version commerciale, nginx Plus. Cette version propriétaire apporte des ajouts intéressants, tels que des API de configuration dynamique, un support technique et une documentation plus riches, des modules tierce-partie certifiés et testés tels que ModSecurity Web Application Firewall, une version binaire mise à jour approximativement 4 fois par an ou des correctifs de sécurité. Nginx Plus est souvent déployé comme load-balancer en association avec d’autres serveurs.

Print
1885

Name:
Email:
Subject:
Message:
x
Rechercher dans les dossiers
Actuellement à la Une...
Si on donnait à Samsung la primeur du premier smartphone à écran pliable, il semble que son concurrent chinois lui vole la vedette. Huawei pourrait en effet présenter un modèle équipé d’un écran pliable en novembre 2018 là où le Sud-Coréen ne serait prêt qu’en 2019.

La Blockchain des Fréquences, projet piloté par l’ANFR en partenariat avec la startup Blockchain Partner, servira aux utilisateurs des fréquences libres pour signaler leurs usages afin d’éviter les effets de congestions sur une même zone géographique.

La justice américaine accuse AT&T et Verizon de s’être entendus afin de rendre plus difficile pour le consommateur de changer d’opérateur, en freinant le développement de la technologie eSim. Celle-ci permet à l’utilisateur de basculer d’un opérateur à l’autre.

AWS, Azure, Google Cloud Platform, Bluemix et les autres… Des centaines de services à portée de clics mis à disposition via le Nuage. Mais entrer dans ces univers n’est pas toujours évident. Voici quelques pistes et conseils… Dossier paru dans L'Informaticien 165.

2018 pourrait marquer le grand retour des jeux estampillés Valve. Le géant a ainsi mis la main sur un petit studio californien, Campo Santo, connu pour son titre Firewatch.

Après Swyft, Cupertino met le code source de FoundationDB en open source. Cette startup spécialisée en bases de données SQL/noSQL a participé à iCloud depuis son rachat en 2015.

L’éditeur de Cloud Foundry a été introduit sur le NYSE vendredi à 15 dollars, l’action passant à 15,73 à la fin de la journée. Une opération permettant à la filiale de Dell de ramener 555 millions de dollars en cash à la maison mère, qui en a bien besoin pour éponger les dettes créées par le rachat d’EMC. Et si VMware était le prochain ?

Le réseau social opère depuis plusieurs mois déjà un virage vers le hardware, virage qui se matérialise par l’Oculus Go, lancé le mois prochain, et la future enceinte connectée Portal. Et pour équiper les prochaines générations de ces appareils, Facebook pourrait bien développer ses propres SoCs.

L’éditeur de solutions de stockage objet réalise un nouveau tour de table et lève la somme significative de 62 millions de dollars.

Le Conseil Constitutionnel a tranché en faveur du législateur, estimant conforme à la Constitution une disposition du code pénal établissant comme un délit le refus de transmettre ses mots de passe et clés de chiffrement lors d’une garde à vue.

Toutes les News

LIVRES BLANCS

Adoptée le 6 juillet 2016, la directive NIS (pour Network Infrastructure Security) doit être transposée par les Etats membres de l’Union Européenne au plus tard le 9 mai 2018.

Ce Livre Blanc éclaire les enjeux et les impacts de la directive NIS sur les pratiques de cybersécurité des pays européens.

  


"L'entreprise numérique", un Livre Blanc IDC/Interxion.

Ce livre blanc présente les résultats d'une enquête menée auprès de plus de 750 entreprises européennes.

Vous y découvrirez l'approche adoptée par les leaders du numérique, combinant l’adoption des services Cloud avec une politique d’hébergement externalisé.  

  


La maintenance prédictive, pilier de la transformation digitale, un Livre Blanc Econocom.

LA MAINTENANCE IT, L’INVISIBLE PIERRE ANGULAIRE DE L’ENTREPRISE DIGITALE

La transformation digitale rebat les cartes de la performance des entreprises. Face à l’évolution simultanée des attentes des clients, des modèles économiques, des conditions de marché et des modes de travail, chaque métier doit revoir sa contribution aux trois axes qui conditionnent dorénavant la réussite: l’excellence opérationnelle, l’expérience utilisateurs et l’innovation métier.


CARTOGRAPHIE DU PAYSAGE DES RANSOMWARES, un Livre Blanc Fortinet.

Comprendre la portée et la sophistication de la menace.

Lorsque les cybermenaces sont multipliées par 35 en un an, chaque entreprise doit en tenir compte. C’est précisément le cas avec les ransomwares. Les hacktivistes ont ciblé des entreprises de pratiquement toutes les tailles et représentant une multitude de secteurs industriels dans le monde entier.


Comment moderniser ses centres de données, un Livre Blanc HPE.

La transformation numérique des entreprises crée de nouvelles contraintes sur les directions informatiques, en particulier pour les environnements de stockage. 

La croissance exponentielle des données, la virtualisation massive, l'évolution des charges de travail et la mise en place permanente de nouvelles applications (devops) obligent l'infrastructure de stockage informatique à évoluer. 


Tous les Livres Blancs