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
2413

x
Rechercher dans les dossiers
Actuellement à la Une...
L’Informaticien rentre de vacances tout beau et tout bronzé. Il s’en est passé des choses, ces deux dernières semaines, du mal-être d’Elon Musk au fichage politique de Twittos en passant par la nomination de Keith Block co-CEO de Salesforce : l’heure est venue de faire un résumé des actualités marquantes des vacances.

C’est dans le cadre d’une affaire criminelle que le Department of Justice exige de Facebook qu’il donne aux enquêteurs accès aux conversations audio d’un suspect. Mais cette fonctionnalité est chiffrée de bout-en-bout et le réseau social refuse de se plier à la demande, estimant qu’il lui faudrait réécrire le code de son application pour supprimer le chiffrement, ce qui impactera l’ensemble de ses utilisateurs.

Tweetbot ou encore Twitterific vont au devant d’une crise : le fonctionnement de ces services de curation de tweets repose en majeure partie sur deux API, User Streams et Site Streams. Or Twitter a décidé de fermer ces interfaces. Restent aux clients tiers deux solutions : proposer un service dégradé ou mettre la main au portefeuille.

La plateforme américaine a subi en juin une intrusion sur ses serveurs, une attaque « sérieuse » qui a vu fuir les mails envoyés par Reddit à ses utilisateurs en juin 2018, ainsi qu’une vieille base de données contenant identifiants et mots de passe chiffrés des utilisateurs entre 2005 et 2007. Le piratage a été rendu possible par une authentification par SMS défaillante.

Siemens mise sur la numérisation de l’industrie, en réalisant depuis plusieurs années des efforts en R&D dans MindSphere, son système d’exploitation pour l’usine. Une plateforme qu’il va renforcer avec une dimension Low Code par le biais du rachat de Mendix.

L’équipementier enrichit son portefeuille Networking and Security Business avec le rachat de cette start-up à l’origine d’une solution SaaS d’accès unifié et d’authentification multifacteur. Objectif de cette opération à 2,35 milliards de dollars : offrir à ses clients la possibilité de connecter en toute sécurité un utilisateur à n'importe quelle application sur n'importe quel réseau dans un monde multicloud.

Dans la série des publications trimestrielles des GAFAM et autres valeurs high tech en vue, Apple a de quoi rassurer par la solidité et la régularité de ses performances. Pour la première fois le X est le plus vendu des iPhone. Les 1000 milliards de capitalisation sont en vue.

Le spécialiste de la gestion de données et Nvidia font cause commune pour fournir une nouvelle architecture pour les applications de deep learning.

Selon une information de CNBC relayée par CRN aux USA, AWS vise à éliminer complètement les technologies Oracle de ses services e-commerce d’ici le premier trimestre 2020.

A mort les mots de passe et vive Web Authentication, hurle Microsoft en ce début août. L’éditeur annonce en fanfare l’arrivée de cet ensemble de technologies d’authentification en ligne sur son navigateur, permettant aux internautes de préférer la biométrie, reconnaissance digitale ou faciale (donc Windows Hello) ou encore les clés physiques aux si faibles mots de passe.

Toutes les News

LIVRES BLANCS

Pour répondre aux exigences de rapidité du modèle DevOps en conservant une cybersécurité efficace, de nouvelles approches doivent être adoptées en matière de sécurité de l'information, comme la sécurité intégrée, l’automatisation et la prévention proactive.


PROTECTION ENDPOINT NEXT-GEN : ÉVOLUTION OU RÉVOLUTION ?, un Livre Blanc SOPHOS.

Après la révolution Next-Gen Firewall de ces dernières années, une nouvelle révolution Next-Gen est cours dans le domaine de la sécurité des systèmes Endpoint. Au-delà du débat pour savoir s’il s’agit d’une révolution ou d’une simple évolution, il est certain qu’une série de nouvelles technologies est en train de rapidement émerger, en apportant une contribution significative à la lutte contre les menaces avancées.


En tant que professionnel de l'informatique, vous en avez sans doute assez d'entendre parler de transformation numérique. Après tout, vous vous occupez déjà d'optimiser la gestion des actifs et de déployer les programmes big data, tout en assurant la protection et la restauration de toutes les données de votre organisation. Or, la transformation numérique peut devenir un projet d'envergure qui ne consiste pas seulement à gérer des données, mais aussi à repenser entièrement le modèle de l'entreprise et/ou à développer une nouvelle stratégie produit innovante, dans les scénarios les plus ambitieux.

  


Atteignez vos objectifs de conformité tout en améliorant votre sécurité avec le PAM (Privileged Access Management = Gestion des accès à privilèges). Un Livre Blanc Wallix.

  


Aujourd’hui, les entreprises doivent ouvrir leur SI à un nombre toujours plus important de prestataires extérieurs, d’abord pour réduire le budget informatique – recours à des prestataires externes pour des compétences qui ne font pas partie du cœur de métier de la DSI - ensuite pour gagner en rapidité dans le déploiement de nouvelles solutions.

  


Tous les Livres Blancs