[Éditeur – Ce message a été mis à jour pour faire référence à l’ API NGINX Plus , qui remplace et déprécie les modules de configuration et d’état dynamiques distincts décrits dans la version originale du message.]
Aujourd'hui, nous sommes heureux d'annoncer que NGINX Plus R12 est disponible en tant que mise à niveau gratuite pour tous les abonnés NGINX Plus. NGINX Plus est une plate-forme de diffusion d'applications logicielles hautes performances qui comprend un équilibreur de charge, un cache de contenu et un serveur Web. NGINX Plus R12 est une version importante avec de nouvelles fonctionnalités axées sur le clustering, la personnalisation et la surveillance.
Pour en savoir plus sur NGINX Plus R12, regardez notre webinaire à la demande .
Les utilisateurs d’entreprise bénéficieront de la nouvelle fonctionnalité de clustering, qui simplifie le processus de gestion des clusters hautement disponibles des serveurs NGINX Plus. Tous les utilisateurs bénéficieront du support officiel de nginScript, un langage de script léger et hautes performances intégré directement dans la configuration NGINX. Les améliorations apportées à la surveillance et à l’instrumentation, à la mise en cache et aux contrôles de santé améliorent la fiabilité et les performances des applications.
nginx
de l'homologue.stale-while-revalidate
et stale-if-error
définies dans la RFC 5861 . La revalidation du cache peut être effectuée en arrière-plan afin que les utilisateurs n'aient pas à attendre la fin de l'aller-retour vers le serveur d'origine.D’autres améliorations fournissent l’authentification par certificat client pour les services TCP, la possibilité d’inspecter les champs personnalisés dans les JWT OAuth, la prise en charge du format WebP dans le module Image-Filter et un certain nombre d’améliorations des performances et de la stabilité.
Nous encourageons tous les abonnés à effectuer immédiatement la mise à jour vers NGINX Plus R12 pour profiter des améliorations de performances, de fonctionnalités et de fiabilité de cette version. Avant d’effectuer la mise à jour, assurez-vous de vérifier les modifications de comportement répertoriées dans la section suivante.
NGINX Plus R12 introduit quelques modifications au comportement par défaut et aux composants internes de NGINX Plus dont vous devez être conscient lors de la mise à niveau :
$ssl_client_s_dn
et $ssl_client_i_dn
a changé. La virgule ( ,
) sert désormais de séparateur de champ au lieu de la barre oblique ( /
) et est échappée conformément aux RFC2253 et4514 . Pour continuer à utiliser le format X509_NAME_oneline
avec le séparateur de champ barre oblique, utilisez les variables $ssl_client_s_dn_legacy
et $ssl_client_i_dn_legacy
.queue
indique à NGINX Plus de mettre en file d'attente les connexions aux serveurs en amont s'ils sont surchargés . En raison des optimisations de mémoire et de performances dans R12, la directive queue
doit désormais apparaître dans le bloc en amont
sous la directive qui spécifie l'algorithme d'équilibrage de charge ( hash
, ip_hash
, least_conn
ou least_time
).Les serveurs NGINX Plus sont souvent déployés dans un cluster de deux instances ou plus à des fins de haute disponibilité et d'évolutivité. Cela vous permet d'améliorer la fiabilité de vos services en les isolant de l'impact d'une panne de serveur, et également de les faire évoluer et de gérer de gros volumes de trafic.
NGINX Plus propose déjà un moyen pris en charge pour distribuer le trafic sur un cluster, de manière active-passive ou active-active . NGINX Plus R12 ajoute une autre méthode prise en charge pour synchroniser la configuration sur un cluster. Cette fonctionnalité de synchronisation de configuration permet à un administrateur de configurer un « cluster » de serveurs NGINX Plus à partir d’un seul emplacement. Ces serveurs partagent un sous-ensemble commun de leur configuration.
Voici comment synchroniser la configuration :
Appelez le processus de synchronisation de configuration, nginx-sync.sh
, qui est inclus dans le package nginx-sync , pour mettre à jour chacun des autres serveurs du cluster (les homologues ). Le processus de synchronisation exécute ces étapes sur chaque homologue :
ssh
ou rsync
.Cette capacité est particulièrement utile lorsque NGINX Plus est déployé dans une paire de serveurs tolérants aux pannes (ou un plus grand nombre). Vous pouvez utiliser cette méthode pour simplifier le déploiement fiable de la configuration au sein d'un cluster ou pour transférer la configuration d'un serveur intermédiaire vers un cluster de serveurs de production.
Pour des instructions détaillées, consultez le Guide d'administration NGINX Plus .
Avec NGINX Plus R12, nous sommes heureux d'annoncer que le module JavaScript NGINX est désormais disponible en tant que module stable pour NGINX Open Source et NGINX Plus. [Le module s'appelait auparavant nginScript et cet article utilise les noms de manière interchangeable.] nginScript est entièrement pris en charge pour les abonnés NGINX Plus.
Avec nginScript, vous pouvez enregistrer des variables personnalisées à l’aide d’une logique complexe, contrôler la sélection en amont, implémenter des algorithmes d’équilibrage de charge, personnaliser la persistance des sessions et même implémenter des services Web simples. Nous publierons des instructions complètes pour certaines de ces solutions sur notre blog dans les prochaines semaines, et nous ajouterons des liens vers elles ici dès qu'elles seront disponibles.
Plus précisément, NGINX Plus R12 inclut les améliorations suivantes :
endsWith
, includes
, repeat
, startsWith
et trim
Bien que nginScript soit stable, le travail continue pour prendre en charge encore plus de cas d'utilisation et de couverture du langage JavaScript. Pour en savoir plus, consultez Exploiter la puissance et la commodité de JavaScript pour chaque requête avec le module JavaScript NGINX<.htmla> sur notre blog.
La surveillance et l’instrumentation dans NGINX Plus constituent une valeur ajoutée importante qui vous donne un aperçu approfondi des performances et du comportement de NGINX Plus et des applications en amont. Les statistiques sont fournies à la fois via notre tableau de bord graphique intégré et au format JSON qui peut être exporté vers votre outil de surveillance préféré.
NGINX Plus R12 ajoute un certain nombre d'améliorations : plus d'informations sur les performances (temps de réponse) des serveurs à charge équilibrée, des informations sur le fonctionnement des services TCP et UDP, et une gamme de données internes qui aident au dépannage pour identifier les problèmes et régler NGINX Plus pour optimiser les performances.
Les nouvelles statistiques de NGINX Plus R12 incluent :
200
signifie « succès »,502
signifie « indisponible en amont », etc.), en les signalant dans la variable $status
. NGINX Plus R12 ajoute une série de colonnes au tableau de bord pour afficher le nombre de codes de réponse pour les serveurs virtuels TCP et UDP, comme ceux déjà fournis pour les serveurs virtuels HTTP. Les pseudo-codes d’état peuvent également être enregistrés pour être intégrés aux outils d’analyse de journaux existants.nginx_build
(par exemple, nginx-plus-r12
) ainsi que le numéro de version NGINX Open Source sous la forme nginx_version
(par exemple,1.11.10
). Le tableau de bord affiche les deux valeurs dans la case supérieure gauche de l’onglet principal.Nom d’hôte en amont – Dans les données JSON, le champ serveur
identifie un serveur dans un groupe en amont par adresse IP et port. Le nouveau champ de nom
signale le premier paramètre à la directive serveur
dans le bloc de configuration en amont
, qui peut être un nom de domaine ou un chemin de socket de domaine UNIX ainsi qu'une adresse IP et un port. Sur le tableau de bord, la colonne Nom la plus à gauche des onglets Upstreams et TCP/UDP Upstreams indique désormais la valeur du champ nom
au lieu du champ serveur
(qui était signalé dans NGINX Plus R11 et versions antérieures).
La nouvelle métrique facilite la corrélation des données JSON et du tableau de bord avec vos serveurs en amont si vous les définissez à l'aide de noms DNS, en particulier des noms qui se résolvent en plusieurs adresses IP.
Utilisation de la zone de mémoire partagée dans les données d'état étendues – Les zones de mémoire partagée sont configurées avec une taille fixe et il peut être difficile de sélectionner une taille qui n'est ni trop grande (la mémoire est allouée mais jamais utilisée) ni trop petite (la mémoire est épuisée et les éléments mis en cache sont supprimés).
La nouvelle instrumentation dans les métriques fournit un rapport interne détaillé de l'utilisation de la mémoire de chaque zone partagée, vous permettant de surveiller l'utilisation de la mémoire et le support technique NGINX pour fournir des conseils plus éclairés sur l'optimisation de la configuration NGINX.
log_format
, et le nouveau paramètre d'échappement
facultatif de la directive applique l'échappement conforme à JSON afin que les lignes de journal soient correctement formatées.Pour plus d'informations, voir Surveillance des activités en direct .
NGINX Plus R12 améliore considérablement le moteur de mise en cache NGINX Plus.
NGINX Plus R12 ajoute la prise en charge des extensions Cache-Control
définies dans la RFC 5861 , stale-while-revalidate
et stale-if-error
. Vous pouvez désormais configurer NGINX Plus pour respecter ces extensions Cache-Control
et continuer à servir les ressources expirées à partir du cache tout en les actualisant en arrière-plan, sans ajouter de latence à la demande du client. De même, NGINX Plus peut servir des ressources expirées à partir du cache si le serveur en amont n’est pas disponible – une technique permettant d’implémenter des modèles de disjoncteur dans les applications de microservices.
À moins qu'il ne soit configuré pour ignorer l'en-tête Cache-Control
, NGINX Plus respecte les temporisateurs obsolètes
des serveurs d'origine qui renvoient des en-têtes Cache-Control
conformes à la RFC 5861, comme dans cet exemple :
Contrôle du cache : max-age=3600 stale-while-revalidate=120 stale-if-error=900
Pour activer la prise en charge des extensions Cache-Control
avec actualisation en arrière-plan, incluez les directives en surbrillance :
proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off; server { # ... location / { proxy_cache my_cache; # Diffuser du contenu obsolète lors de la mise à jour proxy_cache_use_stale editing ; # De plus, ne bloquez pas la première requête qui déclenche la mise à jour # et effectuez la mise à jour en arrière-plan proxy_cache_background_update on ; proxy_pass http://my_upstream; } }
La directive de mise à jour proxy_cache_use_stale
indique à NGINX Plus de diffuser la version obsolète du contenu pendant sa mise à jour. Si vous incluez uniquement cette directive, le premier utilisateur à demander du contenu obsolète paie la pénalité « cache miss » – c'est-à-dire qu'il ne reçoit pas le contenu tant que NGINX Plus ne l'a pas récupéré auprès du serveur d'origine et ne l'a pas mis en cache. Les utilisateurs qui demandent ultérieurement le contenu obsolète pendant qu'il est en cours de mise à jour l'obtiennent immédiatement à partir du cache, tandis que le premier utilisateur n'obtient rien jusqu'à ce que le contenu mis à jour soit récupéré et mis en cache.
Avec la nouvelle directive proxy_cache_background_update
, tous les utilisateurs, y compris le premier utilisateur, reçoivent le contenu obsolète pendant que NGINX Plus l'actualise en arrière-plan.
La nouvelle fonctionnalité est également disponible dans les modules FastCGI , SCGI et uwsgi .
Une amélioration supplémentaire du moteur de mise en cache permet à NGINX Plus de contourner le cache pour les demandes de plage d’octets qui démarrent plus d’un nombre configuré d’octets après le début d’un fichier non mis en cache. Cela signifie que pour les fichiers volumineux tels que le contenu vidéo, les demandes d'une plage d'octets profondément dans le fichier n'ajoutent pas de latence à la demande du client. Dans les versions antérieures de NGINX Plus, le client ne recevait pas la plage d’octets demandée tant que NGINX Plus n’avait pas récupéré tout le contenu du début du fichier jusqu’à la plage d’octets demandée et l’avait écrit dans le cache.
La nouvelle directive proxy_cache_max_range_offset
spécifie le décalage à partir du début du fichier au-delà duquel NGINX Plus transmet une demande de plage d'octets directement au serveur d'origine et ne met pas en cache la réponse. (La nouvelle fonctionnalité est également disponible dans les modules FastCGI , SCGI et uwsgi .)
proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off; server { location / { proxy_cache my_cache; # Contourner le cache pour les requêtes de plage d'octets au-delà de 10 mégaoctets proxy_cache_max_range_offset 10m ; proxy_pass http://my_upstream; } }
Ces améliorations renforcent encore davantage la position de NGINX Plus en tant que moteur de mise en cache hautes performances et conforme aux normes, adapté à n’importe quel environnement, de l’accélération de la diffusion d’applications à la création de réseaux de diffusion de contenu (CDN) à part entière.
NGINX Plus R12 améliore encore les capacités de contrôle de santé actif de NGINX Plus.
Avec l’adoption croissante des environnements conteneurisés et des groupes d’applications mis à l’échelle automatiquement, il est essentiel que l’équilibreur de charge implémente des contrôles de santé proactifs au niveau de l’application et laisse aux nouveaux serveurs le temps d’initialiser les ressources internes avant d’être opérationnels.
Avant NGINX Plus R12, lorsque vous ajoutiez un nouveau serveur au pool d’équilibrage de charge (à l’aide de l’ API NGINX Plus ou du DNS), NGINX Plus le considérait immédiatement comme sain et lui envoyait immédiatement du trafic. Lorsque vous incluez le nouveau paramètre obligatoire
dans la directive health_check
( HTTP ou TCP/UDP ), le nouveau serveur doit réussir le contrôle de santé configuré avant que NGINX Plus ne lui envoie du trafic. Associé à la fonctionnalité de démarrage lent , le nouveau paramètre donne aux nouveaux serveurs encore plus de temps pour se connecter aux bases de données et « se réchauffer » avant d’être invités à gérer l’intégralité de leur part de trafic.
en amont mon_en_amont { zone mon_en_amont 64k; serveur backend1.exemple.com slow_start=30s ; } serveur { emplacement / { proxy_pass http://mon_en_amont; # Exiger que le nouveau serveur réussisse le contrôle d'intégrité avant de recevoir du trafic contrôle_d'intégrité obligatoire ; } }
Ici, le paramètre obligatoire
de la directive health_check
et le paramètre slow_start
de la directive serveur
( HTTP ou TCP/UDP ) sont tous deux inclus. Les serveurs ajoutés au groupe en amont à l'aide des interfaces API ou DNS sont marqués comme non sains et ne reçoivent aucun trafic jusqu'à ce qu'ils passent le contrôle de santé ; à ce stade, ils commencent à recevoir une quantité de trafic progressivement croissante sur une période de 30 secondes.
Il est tout aussi important d’implémenter des contrôles de santé au niveau de l’application pour les serveurs UDP que pour les serveurs HTTP et TCP, afin que le trafic de production ne soit pas envoyé vers des serveurs qui ne sont pas entièrement fonctionnels. NGINX Plus prend en charge les contrôles de santé actifs pour UDP, mais avant NGINX Plus R12, vous deviez créer un bloc de correspondance
qui définissait les données à envoyer
et la réponse à attendre
. Il peut être difficile de déterminer les valeurs appropriées lors de l’utilisation de protocoles binaires ou de protocoles comportant des poignées de main complexes. Pour de telles applications, NGINX Plus R12 prend désormais en charge un contrôle de santé « zéro configuration » pour UDP qui teste la disponibilité de l'application sans vous obliger à définir des chaînes d'envoi et d'attente. Ajoutez le paramètre udp
à la directive health_check
pour une vérification de l’état UDP de base.
upstream udp_app { server backend1.example.com:1234; server backend2.example.com:1234; } server { listen 1234 udp; proxy_pass udp_app; # Vérification de l'état de santé UDP de base health_check udp ; }
Les certificats clients SSL sont couramment utilisés pour authentifier les utilisateurs sur des sites Web protégés. NGINX Plus R12 ajoute la prise en charge de l’authentification pour les services TCP protégés par SSL à la prise en charge HTTP existante. Ceci est généralement utilisé pour l’authentification de machine à machine, par opposition à la connexion de l’utilisateur final, et vous permet d’utiliser NGINX Plus pour la terminaison SSL et l’authentification client lors de l’équilibrage de charge des protocoles de couche 4. Les exemples incluent l’authentification des appareils IoT pour la communication avec le protocole MQTT.
La variable $ssl_client_verify
inclut désormais des informations supplémentaires pour les événements d’authentification client ayant échoué. Cela inclut des raisons telles que les certificats « révoqués » et « expirés ».
Le format des variables $ssl_client_i_dn
et $ssl_client_s_dn
a été modifié pour se conformer aux RFC2253 et4514 . Pour plus de détails, voir Changements de comportement .
NGINX Plus R10 a introduit la prise en charge native du jeton Web JSON (JWT) pour les cas d'utilisation OAuth 2.0 et OpenID Connect . L’un des principaux cas d’utilisation est que NGINX Plus valide un JWT, inspecte les champs qu’il contient et les transmet à l’application backend sous forme d’en-têtes HTTP. Cela permet aux applications de participer facilement à un environnement d’authentification unique (SSO) OAuth 2.0 en déchargeant la validation du jeton sur NGINX Plus et en consommant l’identité de l’utilisateur en lisant les en-têtes HTTP.
NGINX Plus R10 et versions ultérieures peuvent inspecter les champs définis dans la spécification JWT. NGINX Plus R12 étend la prise en charge de JWT afin que n'importe quel champ d'un JWT (y compris les champs personnalisés) puisse être accessible en tant que variable NGINX et donc proxy, enregistré ou utilisé pour prendre des décisions d'autorisation.
Si vous utilisez NGINX Plus, nous vous encourageons vivement à effectuer la mise à niveau vers la version 12 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 .
Veuillez vous référer aux changements de comportement décrits ci-dessus avant de procéder à la mise à niveau.
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 une API pour une surveillance et une gestion de configuration 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 à fournir et à faire évoluer vos applications.
« 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."