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
1175

Name:
Email:
Subject:
Message:
x
Rechercher dans les Dossiers
Actuellement à la Une...
L’héritier du Safe Harbor a passé sa première revue annuelle. La Commission européenne se dit satisfaite des progrès faits par l’administration américaine, sans toutefois se montrer trop enthousiaste : de nombreux points restent à améliorer pour garantir la protection des données des citoyens européens.

Une personne à supprimer sur une vidéo ? Un élément moche du décor ? Pas de problème : avec la fonctionnalité (expérimentale) Cloak d’Adobe, vous pouvez enlever ce que vous n’aimez pas lors du montage vidéo.

Ils sont 31 cosignataires d’une lettre adressée aux autorités européennes, à Bruxelles. Ils s’alarment, voire s’insurgent, contre l’orientation du nouveau code des télécoms qui va selon eux à l’encontre de ce qu’il faut faire pour créer la « Gigabit Society ». 

Elle doit servir au paiement mobile, mais l’application Izly, conçue pour les Crous, avait un autre objectif. Collecter les données de géolocalisation des étudiants afin de leur envoyer des notifications ciblées… et des campagnes publicitaires.

Retour en Israël pour la seconde édition de l’IT Press Tour dans ce pays. La première journée a été bien remplie avec 3 visites dans des entreprises dans des secteurs d’activité très variés : Web, sécurité et gestion des données.

Conçu par le créateur d’Android Andy Rubin, l’Essential Phone est pour le moment une catastrophe en termede ventes, mais aussi du point de vue juridique puisqu’il est poursuivi en justice pour l’exploitation d’une technologie de transmission de données.

Ce serait la concrétisation d’une rumeur qui circule depuis août dernier, et qui permettrait à Cisco de se diversifier dans les communications unifiées, alors que son cœur de métier stagne sur la vente de switches et de routeurs.

La start-up américaine lève 502 millions de dollars supplémentaires. Ils s’ajoutent à la somme déjà astronomique déjà récoltée, de 1,3 milliard de dollars. Et rares sont ceux qui ont vu ne fut-ce que l’ombre d’un prototype.

Pour une fois que les acteurs du Web et les défenseurs de la vie privée en ligne tombent d'accord : tous rejettent en bloc le rapport sur le règlement ePrivacy adopté hier en commission par les eurodéputés. Le texte est à la fois trop contraignant et pas assez...

C’est via son site Uber Movement que le spécialiste des VTC publie une carte avec les données anonymisées de milliers de trajets en région parisienne, issue de l’activité des chauffeurs. 

Toutes les News

LIVRES BLANCS

Repensez votre approche en matière de cybersécurité, un Livre Blanc Fortinet.

Pourquoi les leaders de la sécurité sont désormais contraints de faire face aux principales menaces de sécurité. 

Le paysage de cybermenace continue de croître et d’évoluer. Cybersecurity Ventures prévoit que la cybersécurité deviendra un business de mille milliards de dollars entre 2017 et 2021.



Les tendances du stockage de données en France face au digital,
un Livre Blanc HPE.

La transformation digitale s’opère dans tous les secteurs d’activités et à tous les niveaux des entreprises et des organisations. Les données collectées, traitées et échangées croissent en volume comme en valeur et deviennent de facto un véritable enjeu stratégique. 


Une étude Ponemon sur les coûts liés aux failles de sécurité en France, un Livre Blanc 3M France

IBM et Ponemon Institute ont réalisé une étude en 2016 sur les coûts liés aux brèches de sécurité. L'étude a été accomplie dans de nombreux pays dont la France. Il ressort de cette étude que les coûts ont augmenté en passant de 134 € à 141 € par personne. Et, en moyenne, le coût pour une entreprise s'élève désormais à 3,4 millions d'euros. 


Les nouvelles possibilités du Service Management, un Livre Blanc easyvista.

La transformation numérique des entreprises offre de nouveaux champs d’actions en matière de services rendus aux utilisateurs et ce afin d’améliorer leur vie quotidienne et leur productivité. 


Infrastructure IT gérée dans le cloud, un Livre Blanc Cisco Meraki et Inmac-WStore.

Ce Livre Blanc traite des tendances informatiques modernes et explique comment les produits Cisco Meraki fonctionnent en synergie pour fournir une solution informatique globale, fiable et complète pour les entreprises.


Tous les Livres Blancs