Annonce de NGINX Plus R7

NGINX | 16 septembre 2015

NGINX, Inc. est fière d’annoncer la disponibilité de NGINX Plus Release 7 (R7), la toute dernière version de notre plateforme de mise à disposition d’applications. Cette mise à jour propose une implémentation entièrement prise en charge de la nouvelle norme web HTTP/2, une première pour un serveur web de premier plan. NGINX Plus peut être déployé en tant que passerelle HTTP/2 frontale et accélérateur pour les services web, qu’ils soient nouveaux ou existants.

[Note de la rédaction – Cet article a été mis à jour pour faire référence à l’API NGINX Plus, qui remplace et rend obsolète le module d’état distinct mentionné dans la version originale de l’article.]

La dernière mise à jour apporte également des améliorations majeures et de nouvelles fonctionnalités afin de permettre aux organisations de déployer leurs applications avec les niveaux de performances, de sécurité et de fiabilité requis pour les applications d’entreprise. Elle comprend notamment des améliorations significatives visant à faciliter la surveillance, la gestion et le débogage des applications, ainsi que des fonctionnalités supplémentaires d’optimisation de la sécurité et des performances.

Note de la rédaction – Pour en savoir plus sur les principales nouveautés de NGINX Plus R7, consultez les articles de blog suivants :

Découvrez également notre webinaire à la demande, « Quelles sont les nouveautés de NGINX Plus R7 ? »

Les principales fonctionnalités de cette version sont les suivantes :

  • Implémentation entièrement prise en charge de HTTP/2 – NGINX Plus propose désormais une implémentation entièrement prise en charge de la nouvelle norme web HTTP/2. NGINX Plus peut être déployé en tant que passerelle HTTP/2 frontale et accélérateur pour les services web nouveaux comme existants.

    La prise en charge de HTTP/2 est disponible uniquement dans le package facultatif nginx-plus-http2. Les packages nginx-plus et nginx-plus-extras prennent en charge SPDY et sont actuellement recommandés pour les sites en production en raison de leur compatibilité avec un plus grand nombre de navigateurs et de la maturité de leur code.Remarque : d’après les tests effectués par les utilisateurs sur le correctif en version alpha, et grâce au soutien précoce des entreprises co-commanditaires Automattic et Dropbox, la version open source finale de HTTP/2 sera disponible après la sortie de R7.
  • Performances considérablement améliorées – NGINX Plus R7 prend en charge les pools de threads pour les E/S asynchrones. Cela accélère les charges de travail impliquant de nombreuses E/S disque, telles que la mise en cache de contenu. Nos tests de performance indiquent que les pools de threads peuvent permettre une amélioration des performances jusqu’à 9 fois pour certaines charges de travail.

    NGINX Plus R7 prend également en charge les optimisations du partitionnement des sockets afin d’améliorer les performances sur les serveurs multicœurs. Nos tests de performance indiquent que cela peut plus que tripler le nombre de requêtes par seconde tout en divisant la latence par plus de trois. Le partitionnement des sockets utilise l’option SO_REUSEPORT et nécessite actuellement Linux 3.9 ou version ultérieure, ou DragonFly BSD.
  • Améliorations du contrôle d’accès et de la sécurité – Les fonctionnalités nouvelles et étendues de NGINX Plus contribuent à améliorer la sécurité et la fiabilité de vos applications. Les contrôles d’accès et les limites de connexion pour les services TCP vous permettent d’appliquer des règles de protection à tous vos services gérés par NGINX, tandis que la prise en charge de l’authentification NT LAN Manager (NTLM) vous permet de déployer NGINX Plus en amont d’applications Microsoft existantes.
  • Amélioration de la surveillance et des diagnostics – NGINX Plus fournit des données de surveillance et des statistiques encore plus détaillées dans les outils existants de suivi de l’état et de tableau de bord. Suivez les erreurs côté client, l’activité interne de NGINX et la charge SSL de vos services afin d’identifier plus facilement les problèmes et d’optimiser votre configuration.
  • Tableau de bord NGINX Plus mis à jour et interactif – Le tableau de bord de surveillance de l’activité en temps réel de NGINX Plus a été considérablement enrichi. Il propose désormais une interface à onglets offrant des vues plus détaillées des performances et de l’état de votre environnement NGINX. Vous pouvez explorer les données en profondeur afin d’identifier et de comprendre les problèmes liés à votre infrastructure, puis modifier rapidement vos configurations.

« Au cours de l’année écoulée, nous avons aidé des centaines de nouveaux clients à déployer leurs applications avec NGINX Plus, et notre dernière version vise véritablement à leur fournir encore plus d’outils afin de garantir la meilleure expérience possible à leurs utilisateurs », déclare Gus Robertson, PDG de NGINX, Inc. « Nous constituons la trame de l’infrastructure de nos clients, ce qui nous place dans une position privilégiée pour leur offrir une visibilité et un contrôle inégalés sur les applications qu’ils déploient. Nous prenons très au sérieux le rôle essentiel que nous jouons dans l’activité de nos clients, et les nouvelles fonctionnalités de NGINX Plus R7 en témoignent. »

L’adoption de NGINX a considérablement progressé ces derniers mois. NGINX est le serveur web n° 1 parmi les 100 000 sites les plus fréquentés, et près de la moitié des sites les plus fréquentés au monde utilisent NGINX pour fournir leurs applications à des milliards d’utilisateurs. NGINX, Inc. continue d’investir massivement dans ses outils open source et ses solutions bénéficiant d’un support commercial afin de permettre à tous d’assurer facilement une diffusion irréprochable des applications, des plus petites et légères aux plus grandes plateformes mondiales.

Fonctionnalités de NGINX Plus R7 en détail

Cette section présente en détail l’ensemble des nouvelles fonctionnalités de NGINX Plus R7.

Implémentation entièrement prise en charge de HTTP/2

NGINX Plus R7 prend en charge HTTP/2, la dernière version du protocole HTTP, grâce au nouveau package nginx-plus-http2. HTTP/2 améliore les performances et la sécurité des applications web modernes. La prise en charge de HTTP/2 par NGINX Plus s’intègre parfaitement à vos sites et applications existants, sans nécessiter aucune modification de leur part et avec seulement quelques ajustements minimes de la configuration de NGINX Plus. NGINX Plus R7 est entièrement rétrocompatible et peut acheminer simultanément le trafic HTTP/1.x et HTTP/2, afin d’offrir une expérience optimale quel que soit le navigateur choisi par vos utilisateurs.

HTTP/2 implémenté au niveau du serveur prend en charge les navigateurs utilisant HTTP/2 comme HTTP/1.x

Pour faciliter la transition vers HTTP/2, NGINX Plus fait office de « passerelle HTTP/2 ». Côté frontal, NGINX Plus communique en HTTP/2 avec les navigateurs web clients qui le prennent en charge, tandis que côté serveur, il continue de communiquer en HTTP/1.x (ou via FastCGI, SCGI, uWSGI, etc.) comme auparavant. Ainsi, les serveurs et applications utilisant NGINX Plus comme proxy ne seront pas affectés par le passage à HTTP/2 et n’ont même pas vraiment besoin de savoir quelle version de HTTP leurs clients utilisent.

Pour prendre en charge simultanément HTTPS et HTTP/2, NGINX Plus prend en charge les extensions TLS Next Protocol Negotiation (NPN) et Application‑Layer Protocol Negotiation (ALPN). Ces extensions permettent de faire évoluer de manière transparente une connexion HTTPS vers HTTP/2 si le client et le serveur prennent tous deux en charge HTTP/2.

La seule modification de configuration requise consiste à ajouter le paramètre « http2 » aux directives « listen » existantes. Notez que HTTP/2 n’est pris en charge que si le paramètre « ssl » est également inclus :

server {    listen 443 ssl http2 default_server;
}

Pour activer la prise en charge de HTTP/2, installez le paquet nginx-plus-http2 depuis le dépôt NGINX Plus. Ce paquet ne prend pas en charge SPDY/3.1. Les paquets standard nginx-plus et nginx-plus-extras prennent en charge SPDY/3.1 plutôt que HTTP/2 et sont actuellement recommandés pour les sites en production en raison de leur compatibilité avec un plus grand nombre de navigateurs et de la maturité de leur code. Notez que nous ne proposons actuellement aucune version du paquet nginx-plus-extras prenant en charge HTTP/2.

Pour en savoir plus sur HTTP/2 :

Performances considérablement améliorées

NGINX Plus R7 comprend plusieurs améliorations des performances qui peuvent aider vos applications à être encore plus performantes. Il prend désormais en charge l’optimisation par pool de threads, qui déporte les opérations sur disque susceptibles d’être bloquantes et améliore les performances des charges de travail impliquant de nombreuses E/S disque, telles que la mise en cache de contenu. NGINX Plus R7 comprend également l’optimisation par partitionnement des sockets (Linux 3.9+ ou Dragonfly BSD requis), qui améliore l’efficacité sur les grands serveurs multicœurs où de nombreux processus nginx traitent le trafic. Ces optimisations ont été testées en conditions réelles dans des déploiements NGINX Open Source et sont désormais entièrement prises en charge dans NGINX Plus.

Pools de threads

L’utilisation de pools de threads dans NGINX Plus peut multiplier les performances par 9. Il est bien connu que NGINX utilise une approche asynchrone et événementielle pour gérer les connexions. Mais cette approche asynchrone et événementielle présente encore un problème : les opérations bloquantes. Sous Linux, les opérations sur disque sont bloquantes. Ainsi, lors d’opérations impliquant de nombreuses entrées-sorties disque, NGINX peut passer beaucoup de temps à attendre au lieu d’effectuer un travail utile.

L’allocation d’un pool de threads chargés de gérer les entrées/sorties disque atténue ce problème. Au lieu d’accéder lui-même au disque, le processus worker NGINX confie l’opération d’E/S à un thread disponible du pool, puis reprend le traitement du trafic comme à l’accoutumée. Une fois l’opération disque terminée, le processus worker NGINX en est informé et peut poursuivre les tâches restantes nécessaires pour répondre à la requête.

Pour activer les pools de threads, ajoutez simplement la directive « aio threads » à un bloc « location :

location / {    root /storage;
    aio threads;
}

Pour une présentation détaillée des pools de threads dans NGINX, consultez cet article de blog.

Partitionnement des sockets

Le partitionnement des sockets a été introduit pour la première fois dans NGINX 1.9.1. Cette fonctionnalité s’appuie sur l’option de socket SO_REUSEPORT introduite dans la version 3.9 du noyau Linux. Lorsque cette option est activée, le noyau Linux répartit lui-même les nouvelles connexions de manière uniforme entre les processus de travail NGINX, selon une rotation circulaire. Les processus de travail se chargent ensuite de la limitation des requêtes, de la mise en cache, de l’équilibrage de charge et de toutes les autres tâches que vous avez configurées.

Sans SO_REUSEPORT, les nouvelles connexions sont mises à la disposition de tous les processus de travail disponibles. Le premier à retirer une connexion de la file d’attente l’obtient. Comme aucun algorithme ne répartit uniformément la charge, celle-ci peut facilement être déséquilibrée, quelques processus de travail prenant en charge la majeure partie de la charge tandis que les autres sont sous-utilisés. Il est également inefficace que les processus se disputent les paquets, car cela peut entraîner une contention des verrous.

Le partitionnement des sockets peut multiplier les performances par trois en assurant une répartition uniforme de la charge entre les processus de travail NGINX. Pour activer cette fonctionnalité, ajoutez le nouveau paramètre « reuseport » aux directives « listen » existantes.

server {    listen 12345 reuseport;
    # ...
}

Pour en savoir plus sur cette fonctionnalité, veuillez consulter cet article de blog.

Remarque: cette fonctionnalité nécessite la version 3.9 ou ultérieure du noyau Linux. Ubuntu 13.10 et versions ultérieures, ainsi que Red Hat Enterprise Linux 7 et versions ultérieures, incluent les fonctionnalités requises.

Améliorations du contrôle d’accès et de la sécurité

NGINX Plus R7 ajoute encore davantage de fonctionnalités pour renforcer la sécurité de vos applications. Cette section présente un aperçu de ces fonctionnalités.

Contrôle et limitation des accès TCP

De nouvelles fonctionnalités de proxy TCP et de répartition de charge améliorent le contrôle d’accès (limitation par adresse IP), la limitation des connexions (limitation du nombre de connexions simultanées par client ou service) et l’utilisation de la bande passante (limitation de la bande passante montante ou descendante par connexion). Ces fonctionnalités sont déjà disponibles pour la répartition de charge HTTP et sont utilisées avec beaucoup de succès pour mesurer l’utilisation des API et assurer la protection contre les attaques DDoS.

Pour plus de détails, consultez l’article de blog associé, « Équilibrage de charge TCP dans NGINX Plus R7<.htmlspan> ».

Prise en charge de NTLM

Pour répondre à une forte demande, NGINX Plus R7 peut assurer la mise en proxy et l’équilibrage de charge des applications qui utilisent Microsoft NT LAN Manager (NTLM) pour l’authentification. NTLM est un protocole d’authentification utilisé par de nombreux produits Microsoft, notamment avec les applications anciennes.

Notre prise en charge de NTLM répond à l’exigence de sécurité selon laquelle les connexions aux serveurs backend doivent être maintenues actives, mais ne doivent pas être multiplexées, afin que chaque client authentifié par NTLM dispose d’une connexion dédiée unique au serveur backend.

Pour activer la prise en charge de NTLM, ajoutez la directive ntlm dans la configuration des groupes de serveurs HTTP en amont :

upstream backend {    server 192.168.1.10;
    server 192.168.1.11;
    ntlm;
}

Vous pouvez désormais déployer NGINX en toute confiance en tant que proxy, équilibreur de charge et accélérateur HTTP/2 en amont des applications Microsoft, tout en prenant en charge la plus large gamme possible d’appareils clients.

Amélioration de la surveillance et des diagnostics

NGINX Plus fournit des fonctions détaillées de surveillance et de statistiques qui facilitent l’observation, l’optimisation et le débogage des applications et de l’infrastructure. S’appuyant sur cette fonctionnalité, NGINX Plus R7 intègre de nouveaux compteurs et de nouvelles statistiques. Ces compteurs vous aident à ajuster vos déploiements NGINX Plus et à prendre des décisions éclairées quant au moment où vous devrez éventuellement augmenter la capacité de vos ressources ou ajouter des instances pour gérer une charge plus importante. Voici les nouvelles statistiques et les nouveaux compteurs :

  • 499 erreurs – Compteur par serveur qui comptabilise les erreurs 499, lesquelles se produisent lorsque le client ferme la connexion avant que le serveur backend ait fini de traiter sa requête. Quelques erreurs 499 sont acceptables (il arrive souvent que les utilisateurs ferment leur navigateur Web au milieu d’une session), mais un nombre élevé peut indiquer que le serveur est surchargé et met beaucoup de temps à traiter les requêtes.
  • Redémarrages du worker NGINX Plus – Nombre de redémarrages du worker NGINX Plus. Cela permet de détecter les plantages du processus worker NGINX Plus.
  • Rechargements de NGINX Plus – Nombre de fois où NGINX Plus a été rechargé. Cela permet de confirmer que NGINX Plus a bien été rechargé ou qu’un rechargement a échoué pour diverses raisons, telles qu’une configuration incorrecte.
  • Dépassements de file d’attente – Compteur par serveur qui mesure la capacité d’un serveur à gérer la charge. Un nombre élevé de dépassements de file d’attente indique qu’un serveur peine à suivre le rythme.
  • Négociations SSL – Le nombre de négociations SSL effectuées.
  • Sessions SSL réutilisées – Le nombre de sessions SSL réutilisées à partir d’une session antérieure.
  • Nouvelles sessions SSL – Le nombre de nouvelles sessions SSL négociées.

Comme pour tous les autres compteurs, vous activez les nouveaux compteurs en incluant la directive « api » dans la configuration.

Tableau de bord NGINX Plus interactif mis à jour

Le tableau de bord NGINX Plus a été considérablement amélioré dans la version R7. Il affiche les principales informations système dans un format concis, même pour les configurations volumineuses et complexes :

  • Un nouvel onglet de vue d’ensemble « Tableau de bord » fournit, sur une seule page, un récapitulatif complet de l’activité de NGINX Plus ainsi qu’un aperçu de l’état de santé de votre application.
  • Une interface du tableau de bord vous permet d’ajouter et de supprimer temporairement des serveurs dans un pool d’équilibrage de charge, ainsi que de les marquer temporairement comme étant en cours de retrait ou inactifs.
  • De nouveaux filtres vous permettent d’affiner rapidement les résultats et d’identifier les serveurs défaillants.
  • Une nouvelle vue à onglets vous permet de passer rapidement de l’onglet « Tableau de bord » à des vues plus détaillées des zones, des serveurs en amont et des informations sur le cache.
  • Dans l’ensemble du tableau de bord, de nouvelles infobulles fournissent des informations plus détaillées sur les serveurs en amont, les rechargements de configuration, l’état du cache et les éventuels messages d’erreur.

Pour en savoir plus, consultez l’article de blog associé, « Le nouveau tableau de bord NGINX Plus<.htmla> ».

Quelques bonus supplémentaires

NGINX Plus R7 comporte plusieurs améliorations supplémentaires qui n’entrent dans aucune des catégories ci-dessus :

Mise à niveau de Phusion Passenger Open Source pour assurer sa compatibilité avec NGINX Plus

Si vous utilisez Phusion Passenger Open Source avec NGINX Plus (la directive passenger_root est incluse dans votre configuration), vous devez mettre à niveau votre environnement d’exécution Passenger vers la version 5.0.15 en même temps que vous passez au paquet nginx-plus-extras de NGINX Plus R7. Procédez comme suit (les commandes sont adaptées à Ubuntu) :

  1. Arrêtez NGINX Plus :
# service nginx stop
  1. Mettez à niveau votre environnement d’exécution Phusion Passenger vers la version 5.0.15 :
# apt-get install passenger
  1. Mettez à niveau le package NGINX Plus Extras vers la version R7 :
# apt-get install nginx-plus-extras
  1. Apportez les modifications requises aux directives de configuration de NGINX Plus, comme indiqué dans les notes de mise à niveau de Phusion Passenger.
  2. Démarrez NGINX Plus :
# service nginx start

Les instructions complètes d’installation et de mise à niveau sont disponibles sur le portail client de NGINX Plus.

Mettez à niveau ou essayez NGINX Plus

Si vous utilisez NGINX Plus, nous vous recommandons vivement de passer à la version 7 dès que possible. Vous bénéficierez ainsi de plusieurs correctifs et améliorations, et cela nous permettra de mieux vous aider si vous devez ouvrir un ticket d’assistance. Les instructions d’installation et de mise à niveau sont disponibles sur le portail client.

Si vous n’avez pas encore essayé NGINX Plus, nous vous invitons à le tester pour accélérer vos sites web, équilibrer la charge et assurer la diffusion de vos applications, ou à l’utiliser comme serveur web entièrement pris en charge, doté d’API avancées de surveillance et de gestion. Vous pouvez commencer gratuitement dès aujourd’hui avec une évaluation de 30 jours et constater par vous-même comment NGINX Plus peut vous aider à faire évoluer votre infrastructure et à diffuser vos applications.

Mises en garde

  • NGINX Plus R7 ne prend plus en charge Debian 6, SLES 11 SP3, Ubuntu 10.04 LTS ni Ubuntu 14.10, car ces distributions ne bénéficient plus d’une prise en charge générale. Avant de passer à NGINX Plus R7, effectuez une mise à niveau vers une distribution de système d’exploitation prise en charge.
  • NGINX Plus R7 est la dernière version à inclure le paquet nginx-plus-lua. Si vous utilisez ce paquet, prévoyez de migrer vers le paquet nginx-plus-extras dans NGINX Plus Release 8.
  • Avant d’installer le paquet nginx-plus-http2, vous devez supprimer le paramètre « spdy » de toutes les directives « listen » de votre configuration (remplacez-le par les paramètres « http2 » et « ssl » pour activer la prise en charge de HTTP/2). Avec le paquet nginx-plus-http2, NGINX Plus ne démarre pas si l’une des directives « listen » comporte le paramètre « spdy ».


Partager

À propos de l’auteur

Owen Garrett
Owen GarrettDirecteur senior de la gestion des produits

Autres articles de Owen Garrett

Articles de blog associés

Tendances actuelles des technologies cloud natives, de l’ingénierie de plateforme et de l’IA
NGINX | 13/10/2025

Tendances actuelles des technologies cloud natives, de l’ingénierie de plateforme et de l’IA

Découvrez les principaux enseignements tirés des réponses à l’enquête annuelle F5 NGINX sur les dernières tendances en matière de technologies cloud natives, de sécurité, d’ingénierie de plateforme et d’IA.

Quels contrôleurs Ingress NGINX sont affectés par les vulnérabilités CVE-2022-4886, CVE-2023-5043 et CVE-2023-5044 ?
NGINX | 03/11/2023

Quels contrôleurs Ingress NGINX sont affectés par les vulnérabilités CVE-2022-4886, CVE-2023-5043 et CVE-2023-5044 ?

Lorsque de nouvelles CVE sont signalées, il est facile de ne plus savoir si elles concernent un outil de contrôleur Ingress NGINX particulier, car il existe plusieurs projets. Cet article présente les CVE et explique comment distinguer les différents projets de contrôleurs Ingress afin de dissiper toute confusion.

Votre API est-elle en temps réel ? Testez sa latence avec l’outil rtapi de NGINX
NGINX | 11/03/2020

Votre API est-elle en temps réel ? Testez sa latence avec l’outil rtapi de NGINX

Votre API répond-elle aux requêtes en moins de 30 ms ? Si ce n’est pas le cas, il ne s’agit pas d’une API en temps réel offrant la faible latence exigée par la grande majorité des organisations. Mesurez la latence de votre API avec l’outil rtapi de NGINX et découvrez comment NGINX peut l’aider à offrir une réactivité en temps réel.

Un testeur d’expressions régulières pour NGINX et NGINX Plus
NGINX | 11/06/2019

Un testeur d’expressions régulières pour NGINX et NGINX Plus

Le testeur d’expressions régulières (regex) pour NGINX et NGINX Plus vous évite de tâtonner en vous indiquant si une expression régulière utilisée dans un bloc location ou map correspond aux valeurs comme prévu. Il génère la configuration appropriée et affiche les valeurs des groupes de capture.

Caches partagés avec les clusters de cache NGINX Plus, partie 1
NGINX | 24/01/2017

Caches partagés avec les clusters de cache NGINX Plus, partie 1

Optimisez la capacité de votre cache web en le répartissant entre plusieurs serveurs de cache web NGINX ou NGINX Plus. Découvrez comment procéder dans cet article.

Introduction aux microservices
NGINX | 19/05/2015

Introduction aux microservices

Les microservices suscitent actuellement beaucoup d’intérêt. Cet article de blog est le premier d’une série de sept consacrée à la conception, au développement et au déploiement de microservices.