BLOG | NGINX

Annonce de NGINX Plus R7

NGINX-Partie-de-F5-horiz-black-type-RGB
Vignette d'Owen Garrett
Owen Garrett
Publié le 16 septembre 2015

NGINX, Inc. est fier d'annoncer la disponibilité de NGINX Plus Release 7 (R7), la dernière version de notre plateforme de diffusion d'applications. La mise à jour fournit une implémentation entièrement prise en charge de la nouvelle norme Web HTTP/2, la première du genre 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 nouveaux et existants.

[Éditeur – Ce message a été mis à jour pour faire référence à l’ API NGINX Plus , qui remplace et désapprouve le module d’état distinct mentionné dans la version originale du message.]

La dernière mise à jour ajoute également des améliorations spectaculaires et des fonctionnalités supplémentaires pour garantir que les organisations peuvent fournir leurs applications avec les performances, la sécurité et la fiabilité requises pour les applications d'entreprise. Il s’agit notamment d’améliorations significatives visant à faciliter la surveillance, la gestion et le débogage des applications, ainsi que de fonctionnalités supplémentaires d’optimisation de la sécurité et des performances.

Éditeur – Pour plus de détails sur les nouvelles fonctionnalités clés de NGINX Plus R7 , consultez ces articles de blog associés :

Consultez également notre webinaire à la demande, Quoi de neuf dans NGINX Plus R7 ?

Les principales fonctionnalités de cette version incluent :

  • Implémentation entièrement prise en charge de HTTP/2 – NGINX Plus fournit 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 et existants.

    La prise en charge HTTP/2 est disponible uniquement dans le package facultatif nginx-plus-http2 . Les packages nginx-plus et nginx-plus-extras fournissent un support SPDY et sont actuellement recommandés pour les sites de production en raison d'un support de navigateur plus large et de la maturité du code.

    Note : Sur la base des tests utilisateurs du correctif de niveau alpha et avec le soutien précoce des co-sponsors d'entreprise Automattic et Dropbox, la version open source finale de HTTP/2 sera disponible après la sortie de R7.

  • Performances considérablement amélioréesNGINX Plus R7 prend en charge les pools de threads pour les E/S asynchrones . Cela accélère les charges de travail qui impliquent des niveaux élevés d’E/S de disque, telles que la mise en cache de contenu. Nos tests indiquent que les pools de threads peuvent améliorer les performances jusqu'à 9 fois pour certaines charges de travail.

    NGINX Plus R7 prend également en charge les optimisations de partitionnement de socket pour augmenter les performances sur les serveurs multicœurs. Nos analyses comparatives indiquent que cela peut augmenter les requêtes par seconde et réduire la latence de plus de 3 fois chacune . Le sharding de socket utilise l'option SO_REUSEPORT et nécessite actuellement Linux 3.9+ 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) signifie que vous pouvez déployer NGINX Plus devant les applications Microsoft héritées.
  • Surveillance et diagnostic améliorés – NGINX Plus ajoute des données de surveillance et de statistiques encore plus détaillées aux outils d’état et de tableau de bord existants. Suivez les erreurs client, l’activité interne de NGINX et la charge SSL sur vos services pour vous aider à identifier les problèmes et à ajuster votre configuration.
  • Tableau de bord NGINX Plus mis à jour et interactif – Le tableau de bord de surveillance des activités en direct de NGINX Plus a été considérablement étendu, fournissant désormais une interface à onglets pour fournir des vues plus détaillées des performances et de la santé de votre NGINX. Vous pouvez effectuer des analyses approfondies pour identifier et comprendre les problèmes liés à votre infrastructure et apporter des modifications rapides à vos configurations.

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

L’adoption de NGINX a considérablement augmenté ces derniers mois. NGINX est le serveur Web n°1 parmi les 100 000 premiers sites Web , avec près de la moitié des sites les plus fréquentés au monde utilisant NGINX pour fournir leurs applications à des milliards d'utilisateurs. NGINX, Inc. continue d'investir massivement dans nos outils open source et commerciaux pour faciliter la diffusion d'applications sans faille pour tous, des applications les plus petites et les plus légères jusqu'aux plus grandes plateformes du monde.

Fonctionnalités détaillées de NGINX Plus R7

Cette section fournit un aperçu détaillé de toutes les nouvelles fonctionnalités de NGINX Plus R7 .

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

NGINX Plus R7 offre un support pour HTTP/2, la dernière version du protocole HTTP, via le nouveau package nginx-plus-http2 . HTTP/2 apporte des performances et une sécurité accrues aux applications Web modernes. La prise en charge de NGINX Plus pour HTTP/2 fonctionne de manière transparente avec vos sites et applications existants, sans nécessiter de modifications et avec seulement des modifications très minimes de la configuration de NGINX Plus. NGINX Plus R7 est entièrement rétrocompatible et peut fournir du trafic HTTP/1.x et HTTP/2 en parallèle, pour une expérience optimale quel que soit le navigateur choisi par vos utilisateurs.

Pour faciliter la transition vers HTTP/2, NGINX Plus agit comme une « passerelle HTTP/2 ». En front-end, NGINX Plus communique en HTTP/2 avec les navigateurs Web clients qui le prennent en charge, et en back-end, il communique en HTTP/1.x (ou FastCGI, SCGI, uWSGI, etc.) comme auparavant. Cela signifie que les serveurs et les applications proxy NGINX Plus ne seront pas affectés par le passage à HTTP/2 et n’auront même pas vraiment besoin de savoir quelle version HTTP leurs clients utilisent.

Pour prendre en charge HTTPS et HTTP/2 côte à côte, NGINX Plus prend en charge les extensions Next Protocol Negotiation (NPN) et Application‑Layer Protocol Negotiation (ALPN) dans TLS. Ces extensions sont utilisées pour mettre à niveau de manière transparente une connexion HTTPS vers HTTP/2 si le client et le serveur prennent en charge HTTP/2.

Le seul changement de configuration requis est d'ajouter le paramètre http2 aux directives d'écoute existantes. Veuillez noter que HTTP/2 n'est pris en charge que lorsque le paramètre SSL est également inclus :

serveur { écouter 443 ssl http2 default_server; }

Pour activer la prise en charge HTTP/2, installez le package nginx-plus-http2 à partir du référentiel NGINX Plus. Ce package ne prend pas en charge SPDY/3.1. Les packages 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 de production en raison d'une prise en charge plus large des navigateurs et de la maturité du code. Notez que nous ne construisons actuellement pas de version compatible HTTP/2 du package nginx-plus-extras .

Pour en savoir plus sur HTTP/2 :

Des performances considérablement améliorées

NGINX Plus R7 inclut un certain nombre d’améliorations des performances qui peuvent aider vos applications à fonctionner encore mieux. Il ajoute la prise en charge de l’optimisation du pool de threads , qui décharge les opérations de disque potentiellement bloquantes et améliore les performances des charges de travail (telles que la mise en cache de contenu) qui impliquent des E/S de disque importantes. NGINX Plus R7 inclut également l' optimisation du partitionnement des sockets (Linux 3.9+ ou Dragonfly BSD requis) qui améliore l'efficacité sur les grands serveurs multicœurs où un grand nombre de processus nginx gèrent le trafic. Ils ont été testés sur le terrain dans les déploiements NGINX Open Source et sont désormais entièrement pris en charge dans le cadre de NGINX Plus.

Pools de threads

L'utilisation de pools de threads dans NGINX Plus peut vous offrir des performances 9 fois meilleures. Il est bien connu que NGINX utilise une approche asynchrone et pilotée par événements pour gérer les connexions . Mais l’approche asynchrone et pilotée par les événements présente toujours un problème : le blocage. Sous Linux, les opérations de disque sont bloquantes. Ainsi, lors d'opérations impliquant de nombreuses E/S de disque, NGINX peut passer beaucoup de temps à bloquer plutôt qu'à effectuer un travail productif.

L’allocation d’un pool de threads qui gèrent les E/S de disque atténue ce problème. Au lieu d'aller sur le disque lui-même, le processus de travail NGINX transmet l'opération d'E/S à un thread disponible dans le pool, puis revient au traitement du trafic comme d'habitude. Une fois l’opération sur le disque terminée, le processus de travail NGINX est notifié et peut continuer le travail restant à effectuer pour satisfaire la demande.

Pour activer les pools de threads, ajoutez simplement la directive aio threads à un bloc d'emplacement :

emplacement / {racine/stockage; threads aio ; }

Pour un aperçu complet des pools de threads dans NGINX, veuillez consulter cet article de blog .

Partage de sockets

Le sharding de socket a été introduit pour la première fois dans NGINX 1.9.1. Cette fonctionnalité exploite l'option de socket SO_REUSEPORT introduite dans la version 3.9 du noyau Linux. Lorsque l’option est activée, le noyau Linux lui-même distribue les nouvelles connexions de manière uniforme entre les processus de travail NGINX de manière circulaire. Les processus de travail effectuent ensuite le travail de limitation des demandes, de mise en cache, d'équilibrage de charge et de tout ce que vous avez configuré.

Sans SO_REUSEPORT , de nouvelles connexions sont mises à disposition de tous les processus de travail disponibles. Le premier à retirer une connexion de la file d'attente l'obtient. Comme il n’existe aucun algorithme permettant de répartir la charge de manière uniforme, celle-ci peut facilement être faussée, avec quelques processus de travail prenant la majorité de la charge tandis que d’autres sont sous-utilisés. Il est également inefficace de laisser les processus se battre pour des paquets, car cela peut conduire à des conflits de verrouillage.

Le partitionnement des sockets peut améliorer les performances jusqu'à 3 fois en garantissant que le travail est réparti uniformément entre les processus de travail NGINX. Pour activer cette fonctionnalité, ajoutez le nouveau paramètre reuseport aux directives d'écoute existantes.

serveur {écouter 12345 réutilisation ; # ... }

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

Note : Cette fonctionnalité nécessite le noyau Linux version 3.9 ou ultérieure. Ubuntu 13.10 et versions ultérieures et Red Hat Enterprise Linux 7 et versions ultérieures incluent les fonctionnalités requises.

Contrôle d'accès et améliorations de sécurité

NGINX Plus R7 ajoute encore plus de fonctionnalités pour améliorer la sécurité de vos applications. Cette section fournit un aperçu de ces fonctionnalités.

Contrôle et limitation d'accès TCP

Les nouvelles fonctionnalités du proxy TCP et de l'équilibrage de charge améliorent le contrôle d'accès (limitation par adresse IP), la limitation de connexion (limitation du nombre de connexions simultanées par client ou service) et l'utilisation de la bande passante (limitation de la bande passante en amont ou en aval par connexion). Ces fonctionnalités sont déjà disponibles pour l’équilibrage de charge HTTP et sont utilisées avec grand succès pour le comptage des API et la protection DDoS.

Pour plus de détails, veuillez consulter l'article de blog associé, TCP Load Balancing in NGINX Plus R7<.htmlspan> .

Prise en charge NTLM

En réponse à la demande populaire, NGINX Plus R7 peut proxy et équilibrer la 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, en particulier avec les applications héritées.

Notre prise en charge de NTLM répond à l’exigence de sécurité selon laquelle les connexions aux serveurs back-end sont maintenues actives mais non multiplexées, de sorte que chaque client authentifié NTLM dispose d’une connexion dédiée unique au serveur back-end.

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

backend en amont { serveur 192.168.1.10 ; serveur 192.168.1.11 ; ntlm ; }

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

Surveillance et diagnostic améliorés

NGINX Plus fournit une surveillance et des statistiques détaillées pour faciliter l'observation, l'optimisation et le débogage des applications et de l'infrastructure. S'appuyant sur cette capacité, NGINX Plus R7 est livré avec de nouveaux compteurs et statistiques. Ces compteurs vous aident à optimiser vos déploiements NGINX Plus et à prendre des décisions éclairées sur le moment où vous pourriez avoir besoin d'augmenter ou de diminuer votre capacité pour gérer davantage de charge. Les nouvelles statistiques et compteurs sont :

  • 499 erreurs – Compteur par serveur qui suit499 des erreurs qui se produisent lorsque le client ferme la connexion avant que le serveur principal ait terminé de traiter sa demande. Quelques499 les erreurs sont acceptables (les gens ferment souvent leur navigateur Web au milieu d'une session), mais un grand nombre peut indiquer que le serveur est surchargé et prend beaucoup de temps à traiter les demandes.
  • Redémarrages du worker NGINX Plus – Le nombre de fois que le worker NGINX Plus a redémarré. Cela permet de détecter les pannes du processus de travail NGINX Plus.
  • Rechargements NGINX Plus – Le nombre de fois que NGINX Plus a été rechargé. Cela confirme que NGINX Plus a effectivement é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ébordements de file d'attente indique un serveur qui a du mal à suivre.
  • Poignées de main SSL – Le nombre de poignées de main SSL effectuées.
  • Sessions SSL réutilisées – Le nombre de sessions SSL qui ont été réutilisées à partir d’une session précédente.
  • Nouvelles sessions SSL – Le nombre de nouvelles sessions SSL négociées.

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

Tableau de bord NGINX Plus mis à jour et interactif

Le tableau de bord NGINX Plus a été grandement amélioré dans R7, affichant les informations clés du système dans un format concis, même pour les configurations volumineuses et complexes :

  • Un nouvel onglet de présentation du tableau de bord fournit un résumé complet sur une seule page de l’activité de NGINX Plus et un résumé de l’état de votre application.
  • Une interface sur le tableau de bord vous permet d'ajouter et de supprimer temporairement des serveurs dans un pool d'équilibrage de charge, ainsi que de marquer temporairement les serveurs comme étant en cours de vidange ou inactifs.
  • De nouveaux filtres vous permettent d'explorer rapidement et de trouver 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 flux en amont et des informations sur le cache.
  • Tout au long du tableau de bord, de nouvelles info-bulles fournissent des informations plus détaillées sur les serveurs en amont, les rechargements de configuration, l'état du cache et les messages d'erreur.

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

Encore quelques goodies

NGINX Plus R7 dispose d'un certain nombre d'améliorations supplémentaires qui n'entrent dans aucune des catégories ci-dessus :

  • Streaming HLS amélioré – NGINX Plus prend désormais en charge les arguments start , end et offset sur les URI HLS .m3u8 . Cela permet aux éditeurs de contenu de publier facilement des liens vers des fragments d'un flux vidéo.
  • Modification du contenu – Auparavant, NGINX Plus pouvait simplement apporter une modification simple au contenu d’une réponse, en remplaçant une chaîne par une autre. La directive sub_filter a été étendue pour prendre en charge les variables et les chaînes de substitutions, rendant ainsi possibles des modifications plus complexes.

    Les capacités étendues de modification de contenu facilitent l’adaptation du contenu Web, par exemple en modifiant la méthode ( https:// au lieu de http:// ), le domaine ou d’autres éléments de chemin dans les hyperliens dans le contenu du message. Vous pouvez également l'utiliser pour insérer du contenu dans des pages HTML, comme du texte standard ou des extraits JavaScript, sans avoir à modifier le contenu HTML d'origine.

  • Variable $upstream_connect_time – Une nouvelle variable NGINX qui suit le temps nécessaire pour se connecter à un serveur backend, ce qui facilite l’identification des serveurs lents.
  • Vidage de configuration – Le nouvel indicateur ‑T de la commande nginx vide la configuration NGINX analysée sur stdout dans un format clair et standardisé. Ceci est utile à des fins d'archivage ou lors du dépôt d'un ticket d'assistance.
  • Équilibrage de charge TCP plus configurable – Les directives proxy_bind , proxy_protocol et tcp_nodelay , ainsi que le paramètre backlog de la directive listen , sont désormais pris en charge pour le trafic TCP (module stream ) ainsi que pour le trafic HTTP. Pour plus de détails, veuillez consulter Équilibrage de charge TCP dans NGINX Plus R7<.htmlspan> .
  • Prise en charge de Redis – Le module tiers Redis ( lua-resty-redis ) est désormais intégré au package nginx-plus-extras . Il permet à NGINX Plus d'interagir avec une base de données Redis (par exemple, pour obtenir et définir des valeurs) et est entièrement pris en charge dans le cadre d'un abonnement NGINX Plus.
  • Module Phusion Passenger mis à jour – Le module Open Source Phusion Passenger a été mis à jour vers la version 5.0.15.

Mise à niveau de Phusion Passenger Open Source pour le rendre compatible 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 runtime Passenger vers la version 5.0.15 en même temps que vous effectuez la mise à niveau vers le package nginx-plus-extras NGINX Plus R7 . Effectuez ces étapes (les commandes sont adaptées à Ubuntu) :

  1. Arrêter NGINX Plus :

    # service nginx stop
  2. Mettez à niveau votre environnement d'exécution Phusion Passenger vers la version 5.0.15 :

    # apt-get install passager
  3. Mettez à niveau le package NGINX Plus Extras vers R7 :

    # apt-get installe nginx-plus-extras
  4. Effectuez les mises à jour requises des directives de configuration NGINX Plus comme décrit dans les notes de mise à niveau de Phusion Passenger.

  5. Démarrer NGINX Plus :

    # démarrage du service nginx

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

Mettre à niveau ou essayer NGINX Plus

Si vous utilisez NGINX Plus, nous vous encourageons vivement à effectuer la mise à niveau vers la version 7 dès que possible. Vous bénéficierez d'un certain nombre de correctifs et d'améliorations, et cela nous aidera à 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 essayé NGINX Plus , nous vous encourageons à l'essayer pour l'accélération Web, l'équilibrage de charge et la distribution d'applications, ou en tant que serveur Web entièrement pris en charge avec des API de surveillance et de gestion améliorées. Vous pouvez commencer gratuitement dès aujourd’hui avec une évaluation de 30 jours et voir par vous-même comment NGINX Plus peut vous aider à développer et à livrer vos applications.

Mises en garde

  • NGINX Plus R7 ne prend plus en charge Debian 6, SLES 11 SP3 ou Ubuntu 10.04 LTS ou 14.10, car ces distributions ne sont généralement plus prises en charge. Avant de procéder à la mise à niveau vers 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 qui inclut le package nginx-plus-lua ; si vous utilisez ce package, prévoyez de migrer vers le package nginx-plus-extras dans NGINX Plus Release 8 .
  • Avant d'installer le package nginx-plus-http2 , vous devez supprimer le paramètre spdy sur toutes les directives d'écoute de votre configuration (remplacez-le par les paramètres http2 et ssl pour activer la prise en charge de HTTP/2). Avec le package nginx-plus-http2 , NGINX Plus ne parvient pas à démarrer si l'une des directives d'écoute possède le paramètre spdy .

« Cet article de blog peut faire référence à des produits qui ne sont plus disponibles et/ou qui ne sont plus pris en charge. Pour obtenir les informations les plus récentes sur les produits et solutions F5 NGINX disponibles, explorez notre famille de produits NGINX . NGINX fait désormais partie de F5. Tous les liens NGINX.com précédents redirigeront vers un contenu NGINX similaire sur F5.com."