Nous sommes heureux d’annoncer la disponibilité de NGINX Plus Release 30 (R30). Basé sur NGINX Open Source, NGINX Plus est la seule solution logicielle tout-en-un faisant office de serveur web, d’équilibreur de charge, de proxy inverse, de cache de contenu et de passerelle API.
Les fonctionnalités nouvelles et améliorées de NGINX Plus R30 comprennent :
- Prise en charge native de QUIC+HTTP/3 – NGINX Plus prend désormais officiellement en charge HTTP/3. Cette implémentation ne dépend pas de bibliothèques tierces pour fournir les fonctionnalités TLS manquantes d’OpenSSL nécessaires à la prise en charge de HTTP/3 via le protocole QUIC. Elle utilise une couche de compatibilité OpenSSL développée par l’équipe NGINX afin de contourner les difficultés liées aux interfaces TLS de QUIC qui ne sont pas prises en charge par OpenSSL.
- Télémétrie des connexions par processus worker – La surveillance des connexions au niveau de chaque processus worker est désormais prise en charge. Les utilisateurs peuvent ainsi optimiser les performances de NGINX en ajustant le nombre de processus workers et en répartissant efficacement les connexions entre eux.
- Package de diagnostic – Le package de diagnostic NGINX rassemble dans un seul fichier compressé toutes les données nécessaires à la résolution des problèmes. Cela améliore la communication entre les utilisateurs de NGINX Plus et l’assistance F5, ce qui accroît l’efficacité et réduit le délai de résolution des problèmes.
Pour compléter cette version viennent s’ajouter de nouvelles fonctionnalités et des corrections de bugs issues de NGINX Open Source, ainsi que des mises à jour du module JavaScript de NGINX.
Modifications importantes du comportement
Remarque: si vous effectuez une mise à niveau depuis une version autre que NGINX Plus R29, veillez à consulter la section « Modifications importantes du comportement » dans les précédents billets d’annonce pour toutes les versions comprises entre votre version actuelle et celle-ci.
Abandon de la directive « listen … http2 »
La directive « listen … http2 » est obsolète depuis NGINX 1.25.1. La vérification de la configuration de NGINX à l’aide de la commande « nginx -t » affiche un avertissement à ce sujet.
nginx -t
nginx: [warn] the "listen ... http2" directive is deprecated, use the "http2" directive instead in etc/nginx/nginx.conf :15
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successfulIl est vivement recommandé à tous les utilisateurs actuels de cette directive de mettre à niveau NGINX et d’utiliser la directive http2, qui permet d’activer HTTP/2 individuellement pour chaque serveur.
Remplacez ceci :
listen 443 ssl http2;En ceci :
listen 443 ssl;
http2 on;Indisponibilité du module GeoIP2 sur Amazon Linux 2
Les versions précédentes de NGINX Plus utilisaient la bibliothèque « libmaxminddb » du dépôt EPEL d’Amazon Linux 2 pour compiler le module GeoIP2. Le dépôt EPEL ne fournit plus cette bibliothèque, qui n’est pas non plus disponible nativement dans la distribution Amazon Linux 2. Par conséquent, ce module n’est plus disponible dans NGINX Plus R30, car il n’existe aucun moyen viable de le compiler pour Amazon Linux 2.
Modifications apportées aux directives MQTT
La directive « mqtt_rewrite_buffer_size », qui permet de définir la taille du tampon utilisé pour construire les messages MQTT, a été remplacée par la directive « mqtt_buffers ». Cette nouvelle directive permet de définir le nombre de tampons pouvant être alloués par connexion, ainsi que la taille de chacun d’eux.
Version de l’API mise à jour
Le numéro de version de l’API NGINX Plus est passé de 8 à 9 afin de refléter l’ajout des métriques par worker décrites dans « Télémétrie des connexions par worker ». Les numéros de version précédents fonctionnent toujours, mais les résultats n’incluent pas les métriques ajoutées dans les versions ultérieures de l’API.
Modifications de la prise en charge des plateformes
Nouveaux systèmes d’exploitation pris en charge :
- Debian 12
- Alpine 3.18
Anciens systèmes d’exploitation supprimés :
- Alpine 3.14, dont la fin de vie (EOL) a été atteinte le 1er mai 2023
- Ubuntu 18.04, dont la fin de vie (EOL) a été atteinte le 26 avril 2023
Anciens systèmes d’exploitation obsolètes dont la suppression est prévue dans NGINX Plus R31 :
- Alpine 3.15, qui arrivera en fin de vie en novembre 2023
Nouvelles fonctionnalités en détail
Prise en charge native de QUIC+HTTP/3
HTTP/3 sur QUIC est une fonctionnalité très attendue, demandée par nombre de nos clients professionnels, et nous sommes ravis de la proposer officiellement dans NGINX Plus R30. Il s’agit d’une nouvelle technologie et d’une nouvelle implémentation auxquelles nous continuerons d’accorder une attention particulière dans les prochaines versions. Nous recommandons aux utilisateurs de NGINX Plus de commencer par la tester dans un environnement hors production et de nous faire part de leurs précieux commentaires.
NGINX Plus s’appuie sur OpenSSL pour sécuriser les communications et assurer les fonctions cryptographiques, en utilisant les bibliothèques SSL/TLS fournies avec les systèmes d’exploitation. Toutefois, comme les interfaces TLS de QUIC ne sont pas prises en charge par OpenSSL au moment de cette version, des bibliothèques tierces sont nécessaires pour fournir les fonctionnalités TLS manquantes requises par HTTP/3.
Pour répondre à cette problématique, l’équipe NGINX a développé une couche de compatibilité OpenSSL, éliminant ainsi la nécessité de compiler et de distribuer des bibliothèques TLS tierces telles que quictls, BoringSSL et LibreSSL. Cela permet de gérer l’expérience QUIC+HTTP/3 de bout en bout dans NGINX sans avoir à supporter une implémentation TLS personnalisée ni à dépendre des calendriers et feuilles de route de bibliothèques tierces. Nous prévoyons d’enrichir la couche de compatibilité OpenSSL dans les prochaines versions avec davantage de fonctionnalités et d’options, telles que la prise en charge du 0-RTT.
Voici la configuration QUIC+HTTP/3 :
http {
log_format quic '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" "$http3"';
access_log logs/access.log quic;
server {
# for better compatibility it's recommended
# to use the same port for quic and https
listen 8443 quic reuseport;
listen 8443 ssl;
ssl_certificate certs/example.com.crt;
ssl_certificate_key certs/example.com.key;
location / {
# required for browsers to direct them into quic port
add_header Alt-Svc 'h3=":8443"; ma=86400';
}
}
}La prise en charge de QUIC+HTTP/3 dans NGINX Plus R30 est proposée sous la forme d’un binaire unique, contrairement à la prise en charge expérimentale de HTTP/3 introduite dans NGINX Plus R29, qui disposait d’un binaire distinct pour nginx quic. Cette amélioration facilite le déploiement de cette fonctionnalité dans votre environnement.
Remarque : avec NGINX Plus R30, nous mettons fin au support et aux mises à jour du binaire QUIC autonome et prévoyons de le retirer des options de téléchargement dans le courant de l’année.
Télémétrie des connexions par worker
Les utilisateurs de NGINX Plus peuvent désormais surveiller le nombre total de connexions par processus worker afin de régler correctement la directive worker_connections. Cette amélioration leur offre une meilleure visibilité sur la répartition des connexions entre les workers. La possibilité de régler le nombre de connexions par worker permet également de mieux évaluer leur déploiement NGINX.
Les métriques de connexion par processus worker sont disponibles via l’API REST. Pour récupérer ces métriques, utilisez le point de terminaison …/api/9/workers.
Pour récupérer les métriques de connexion par worker pour un worker donné, utilisez le point de terminaison .../api/9/workers/<worker id> . L’identifiant du worker est indexé à partir de 0.
Voici un exemple de réponse :
{
{
"id": 0,
"pid": 2346,
"connections": {
"accepted": 1,
"dropped": 0,
"active": 1,
"idle": 0
},
"http": {
"requests": {
"total": 15,
"current": 1
}
}
},
{
"id": 1,
"pid": 1234,
"connections": {
"accepted": 3,
"dropped": 0,
"active": 1,
"idle": 0
},
"http": {
"requests": {
"total": 15,
"current": 1
}
}
},
...
}Les métriques de connexion par processus worker sont disponibles dans le NGINX Plus Live Activity Monitoring Dashboard, comme illustré ci-dessous. Accédez à une démonstration en direct de cette fonctionnalité sur demo.nginx.com.

Le tableau de bord affiche les informations ci-dessous sur les connexions et les requêtes NGINX Plus.
Connexions :
- Connexions acceptées par processus de travail
- Connexions actives par worker
- Connexions inactives par worker
- Connexions interrompues par worker
Requêtes :
- Requêtes en cours par worker
- Nombre total de requêtes par worker
- Requêtes/s par worker
Package de diagnostic
Afin de réduire le délai de résolution des problèmes, le package de diagnostic simplifie la collecte des données nécessaires au dépannage de votre environnement NGINX. Il permet également d’éviter les incohérences et les retards liés aux demandes et à la collecte manuelles des informations nécessaires au dépannage, rendant les échanges entre les clients de NGINX Plus et le support F5 plus efficaces.
Le package de diagnostic collecte les éléments suivants :
- Informations sur NGINX – version de NGINX Plus, configurations, informations sur les processus, modules tiers, journaux, ainsi que statistiques et points de terminaison de l’API
- Informations système – Commandes de l’hôte (
ps,lsof,vmstat, etc.) - Informations sur les services –
systemd, etc. - NGINX Agent – Journaux et fichiers de configuration (le cas échéant)
- NGINX App Protect – Journaux et configurations (le cas échéant)
- Journal du package de support – Journal contenant la liste de tous les fichiers collectés
Notre objectif, avec l’ajout du package de diagnostic, est d’indiquer clairement aux utilisateurs les commandes exécutées par le script inclus dans ce package ainsi que les données collectées. Consultez la page NGINX Plus Diagnostic Package pour plus d’informations.
Remarque : La disponibilité du package de diagnostic est annoncée dans le cadre de la version actuelle de NGINX Plus R30. Toutefois, ce package ne dépend pas réellement de cette version. À l’avenir, nous prévoyons de le mettre à jour en fonction de vos retours et de ceux du support F5, afin d’améliorer le processus de collecte des données de dépannage.
Autres améliorations de NGINX Plus R30
Optimisations de MQTT
Grâce aux améliorations apportées à la consommation de mémoire du module de filtrage Message Queuing Telemetry Transport (MQTT), le débit est désormais multiplié par 4 à 5.
La directive mqtt_rewrite_buffer_size a été supprimée. Elle est remplacée par la nouvelle directive mqtt_buffers <num> <size> qui permet de spécifier le nombre de tampons que le module peut allouer par connexion, ainsi que la taille de chaque tampon. Par défaut, le nombre de tampons est de 100 et la taille de chacun est de 1 024 octets, ce qui donne à la variable la valeur par défaut mqtt_buffers <100> <1024>.
Optimisations du rechargement DNS
NGINX Plus conserve désormais les délais d’expiration des noms DNS pour les hôtes en amont résolus dynamiquement lors des rechargements, ce qui évite d’avoir à les résoudre de nouveau lors du rechargement de la configuration. Avant cette mise à jour, des résolutions DNS étaient déclenchées pour tous les serveurs en amont. Avec cette mise à jour, NGINX conserve les résolutions DNS et les délais d’expiration pour tous les serveurs en amont, et ne déclenche des résolutions DNS lors du rechargement que pour les serveurs en amont nouveaux ou modifiés.
Cette optimisation aura le plus d’impact sur les environnements NGINX comportant un grand nombre d’hôtes en amont. Si votre configuration NGINX compte au moins 100 hôtes en amont, les gains apportés par ces optimisations seront particulièrement perceptibles.
Modifications héritées de NGINX Open Source
NGINX Plus R30 repose sur NGINX Open Source 1.25.1 et bénéficie des changements fonctionnels, des nouvelles fonctionnalités et des corrections de bogues apportés depuis la sortie de NGINX Plus R29 (dans NGINX 1.25.0 et 1.25.1).
Modifications
- La prise en charge du push serveur HTTP/2 a été supprimée. La fonctionnalité HTTP/2 «
server_push» était très peu adoptée et ne pouvait être utilisée que dans des cas d’usage très limités. (Selon la documentation de référence de l’IETF 102, elle n’était utilisée que dans 0,04 % des sessions. Selon la RFC 913, elle était « difficile à utiliser efficacement ».) Le push serveur HTTP/2 a été désactivé dans Chrome à partir de la version 106. Dans le cadre de cette modification, les directiveshttp2_push,http2_push_preloadethttp2_max_concurrent_pushessont devenues obsolètes. - La directive obsolète «
ssl» n’est plus prise en charge. La directive «ssl» a été déclarée obsolète dans NGINX 1.15.0 et remplacée par le paramètre «ssl» de la directive listen. La directive ssl obsolète a désormais été supprimée. - Comme indiqué ci-dessus, la directive «
listen … http2» est obsolète. Il est recommandé d’utiliser plutôt la directive «http2».- Pour les connexions SSL utilisant OpenSSL v1.0.2h ou une version ultérieure, si le protocole HTTP/2 est activé sur le serveur virtuel choisi au moyen de l’indication du nom du serveur (SNI), il est automatiquement sélectionné par la fonction de rappel de négociation du protocole de la couche applicative (ALPN).
- Pour les versions antérieures d’OpenSSL, le protocole HTTP/2 est activé en fonction de la configuration du serveur virtuel par défaut.
- Pour les connexions TCP non chiffrées, HTTP/2 est désormais détecté automatiquement grâce au préambule HTTP/2 s’il est activé sur le serveur virtuel par défaut. Si le préambule ne correspond pas, le protocole HTTP/0.9-1.1 est utilisé.
- La prise en charge de HTTP/2 sur TCP en clair (h2c) et de HTTP/1.1 sur un même socket d’écoute a été ajoutée. Dans l’implémentation existante, si un utilisateur configure un socket d’écoute h2c (par exemple,
listen port_num http2), seules des connexions HTTP/2 peuvent être créées. Un socket d’écoute h2 prend en charge HTTP/1.1 et HTTP/2, le protocole étant négocié via ALPN. Toutefois, dans l’implémentation existante, les clients HTTP/1.1 échouent sur ce socket, ce qui empêche d’utiliser la mise à niveau HTTP pour négocier le protocole. Cette modification permet de prendre en charge simultanément HTTP/1.1 et HTTP/2 sur un socket TCP en clair lors de l’utilisation de HTTP/2. - La prévention d’un éventuel dépassement de mémoire tampon avec certaines variables «
$sent_http_*» est activée. Une erreur dans la logique d’évaluation des variables multi-en-têtes «$sent_http_» pouvait entraîner des dépassements de mémoire tampon lorsque certains éléments étaient effacés, mais restaient dans la liste chaînée. Ce problème se produisait lorsque des modules tiers étaient utilisés pour remplacer les valeurs multi-en-têtes. La mise à jour affine les contrôles des limites, garantissant une gestion et une évaluation plus sûres de ces variables.
Fonctionnalités
- La prise en charge complète de HTTP/3 a été ajoutée. La version principale NGINX 1.25.0 a introduit la prise en charge de HTTP/3, qui a été intégrée à NGINX Plus R30. L’implémentation de NGINX Plus R30 présente les modifications suivantes par rapport aux paquets expérimentaux fournis avec NGINX Plus R29 :
-
- Suppression de la directive «
quic_mtu» - Suppression de la directive «
paramètre http3 de listen» - Suppression de la prise en charge de QUIC dans le module stream
- Suppression du push serveur HTTP/3
- Correction de la compilation de la couche de compatibilité OpenSSL avec OpenSSL 3.2+
- Suppression de la directive «
Correction de bug
- Correction d’une erreur de segmentation («
segfault») en cas d’échec de l’allocation de la liste d’étude d’une expression régulière (regex).
Pour obtenir la liste complète des nouveautés, fonctionnalités, corrections de bogues et solutions de contournement héritées des versions récentes, consultez le fichier CHANGES de NGINX.
Modifications apportées au module JavaScript de NGINX
NGINX Plus R30 intègre les modifications apportées par la version 0.8.0 du module NGINX JavaScript (njs).
Fonctionnalités
- Ajout des propriétés NGINX globales :
ngx.build, ngx.conf_file_path, ngx.error_log_path, ngx.prefix, ngx.version, ngx.version_number, ainsi quengx.worker_id. - Ajout de la directive «
js_shared_dict_zone» pour les contextes http et stream, qui permet de déclarer un dictionnaire partagé entre les processus de travail. - Ajout de méthodes Array conformes à ES13 :
Array.from(), Array.prototype.toSorted(), Array.prototype.toSpliced(), Array.prototype.toReversed(). - Ajout de méthodes TypedArray conformes à ES13 :
%TypedArray%.prototype.toSorted(), %TypedArray%.prototype.toSpliced(), %TypedArray%.prototype.toReversed(). - Ajout de propriétés CryptoKey dans l’API WebCrypto :
algorithm, extractable, type, usages.
Modifications
- Suppression du traitement spécial des en-têtes interdits dans l’API Fetch introduit dans la version 0.7.10.
- Suppression de «
r.requestBody()» du module http, qui était obsolète depuis la version 0.5.0. Il convient d’utiliser à la place la propriété «r.requestBuffer» ou «r.requestText». - Suppression de
r.responseBody()du module http, qui était obsolète depuis la version 0.5.0. Il convient d’utiliser à la place la propriétér.responseBufferour.responseText. - Levée d’une exception dans
r.internalRedirect()lors du filtrage dans le modulehttp. - Les méthodes natives reçoivent un argument
retval. Cette modification rompt la compatibilité avec les extensions C pour njs et nécessite d’adapter le code. - Les méthodes String obsolètes et non conformes ont été supprimées. Les méthodes suivantes ont été supprimées :
String.bytesFrom(), String.prototype.fromBytes(), String.prototype.fromUTF8(), String.prototype.toBytes(), String.prototype.toUTF8(), String.prototype.toString(encoding). - Suppression de la prise en charge de la compilation avec GNU readline.
Corrections de bugs
- Correction de l’accesseur en écriture
r.statuslors du filtrage dans le modulehttp. - Correction de la définition de l’en-tête
Locationdans le modulehttp. - Correction de la valeur de retour de «
сrypto.getRandomValues()». - Correction de l’évaluation des noms de propriétés calculés avec des expressions de fonction.
- Correction du nom implicite d’une expression de fonction déclarée dans des tableaux.
- Correction de l’analyse syntaxique des boucles for-in.
- Correction de
Date.parse()avec le format ISO 8601 et le décalage horaire UTC.
Pour obtenir la liste complète des fonctionnalités, modifications et corrections de bogues, consultez le journal des modifications de njs.
Mettez à niveau ou essayez NGINX Plus
Si vous utilisez NGINX Plus, nous vous recommandons vivement de passer à NGINX Plus R30 dès que possible. Outre toutes les nouvelles fonctionnalités remarquables, vous bénéficierez également de plusieurs correctifs et améliorations supplémentaires. En restant à jour, vous permettrez à NGINX de mieux vous aider si vous devez ouvrir un ticket auprès du support.
Si vous n’avez pas encore essayé NGINX Plus, nous vous invitons à le découvrir. Vous pouvez l’utiliser pour la sécurité, l’équilibrage de charge et comme passerelle API, ou comme serveur web entièrement pris en charge, doté d’API avancées de surveillance et de gestion. Commencez dès aujourd’hui avec un essai gratuit de 30 jours.
À propos de l’auteur
Articles de blog associés

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