X
Rechercher dans les dossiers
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
1577

Name:
Email:
Subject:
Message:
x
Actuellement à la Une...
Le service de messagerie instantanée annonce le lancement d’une version de son application taillée pour les entreprises. WhatsApp Business propose les mêmes services que la version de base et comprend quelques fonctionnalités spécifiques, un profil professionnel, des statistiques ou des réponses automatisées par exemple.

Les lecteurs réguliers de cette rubrique savent mon affection profonde pour le buzzword de l’année, la transformation numérique. Rappelez-vous son bras armé au début de l’an dernier qui devait être le CDO, le Chief Digital Officer. Avec lui on allait voir ce qu’on allait voir. L’innovation et les nouveaux services devaient tomber comme à Gravelotte et infuser l’ensemble de l’entreprise.

Le Club des Experts de la Sécurité de l'Information et du Numérique (CESIN) vient de rendre public son 3ème baromètre annuel en collaboration avec l’institut Opinion Way. L’enquête a été répondu par 142 membres de l’organisation. Les résultats sont loin d’être rassurants.

Après la France, l’Italie. L’autorité antitrust locale a annoncé hier avoir ouvert deux enquêtes visant respectivement Apple et Samsung. Leur ait reproché d’exploiter les carences de certains composants de leurs produits pour en réduire la durée de vie et ainsi pousser les consommateurs à l’achat d’un nouvel appareil. Soit de l’obsolescence programmée.

Le gendarme des SI et l’organisme en charge de la supervision des banques et assurances se sont dits oui. Les deux autorités s’engagent dans une coopération quant à la sécurité des systèmes d’information dans les secteurs financiers, très exposés à la cybercriminalité.

La start-up française spécialisée dans la sécurité des cryptomonnaies ne connaît pas la crise : elle vient d’annoncer sa Serie B qui voit entrer au capital de la jeune société Draper Ventures, Cathay Innovation et Korelya Capital.

Après près de 6 ans de revenus en déclin, IBM annonce des revenus trimestriels dans le vert pour son quatrième trimestre et un chiffre d'affaires en hausse de 3,6 % à 22, 54 milliards de dollars.

Mountain View annonce un accord croisé de licence avec le géant chinois. Rien de vraiment inhabituel, si ce n’est le timing. Google a en effet lancé en toute fin d’année dernière un certain nombre d’opérations en Chine, après des années d’absence, et cet accord avec Tencent pourrait bien n’être qu’un commencement.

Mobileggedon, le retour ! Quand le géant des moteurs de recherche annonce une modification de son système de référencement, le monde entier tremble. Cette fois-ci, c’est aux pages dont le chargement est lent que Google s’attaque.

Au sommaire du magazine L'Informaticien qui paraît cette semaine : AU COEUR DE MELTDOWN & SPECTRE - Tendances'18 : expérimenter l'IA au plus vite ! - Développez vos premiers chatbots - Le NAS revient en force - French Tech Bordeaux - Klaxoon réinvente la réunion - Bootcamp développeur mobile - Rencontre avec Éric Léandri (Qwant)...

Toutes les News

LIVRES BLANCS

"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. 


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.


Tous les Livres Blancs