La version principale de nginx 1.27.5 a été publiée, poursuivant le développement de nouvelles fonctionnalités. Seules les modifications liées à la correction de bogues graves et de vulnérabilités sont apportées à la branche stable 1.26.x, qui est maintenue parallèlement. À l'avenir, une branche stable 1.28 sera formée à partir de la branche principale 1.27.x. Le code du projet est écrit en langage C et est distribué sous la licence BSD.
Parmi les changements dans nginx 1.27.5 :
- Pour les connexions utilisant le protocole QUIC, le support de l'algorithme de contrôle de la congestion CUBIC (RFC 9438) a été ajouté. Son fonctionnement consiste à augmenter progressivement la taille de la fenêtre de congestion jusqu'à ce qu'une perte de paquets survienne, après quoi la taille de la fenêtre revient à sa valeur avant la perte. Dans les tests réalisés, l'utilisation de CUBIC a permis de réduire le temps de transmission d'un fichier de 500 Mo de 24 % avec des latences de 40 ms et un BDP de 750 K (Bandwidth Delay Product), et de 73 % avec des latences de 100 ms et un BDP de 9 M.
- La taille maximale des sessions SSL pouvant être mises en cache en mémoire partagée a été augmentée à 8192.
- Le montage avec la bibliothèque C Musl a été corrigé.
- Des travaux ont été effectués pour optimiser les performances et corriger les erreurs dans l'implémentation de HTTP/3.
- Des bogues dans l'implémentation des directives « grpc_ssl_password_file », « proxy_ssl_password_file » et « uwsgi_ssl_password_file » qui se manifestaient lors du chargement de certificats SSL et des clés de cryptage à partir de variables ont été corrigés.
- Des problèmes liés à l'affichage des variables $ssl_curve et $ssl_curves lors de l'utilisation d'implémentations de courbes elliptiques dans OpenSSL ont été résolus.
On peut également noter la publication des versions stables des projets FreeNginx 1.27.5 et 1.27.6, un fork de Nginx. Le développement du fork est dirigé par Maxim Dounine, l'un des développeurs clés de Nginx. FreeNginx est positionné comme un projet non commercial, garantissant le développement de la base de code de Nginx sans intervention corporative.
Modifications dans FreeNginx 1.27.5 et 1.27.6 :
- Des problèmes liés à l'utilisation d'OpenSSL 3.5 ont été résolus (les noms des groupes X25519MLKEM768 n'apparaissaient pas dans les variables $ssl_curve et $ssl_curves).
- Un plantage du processus de travail dans les configurations avec la directive proxy_ssl_password_file, se manifestant lors de l'indication de variables dans les directives proxy_ssl_certificate et proxy_ssl_certificate_key, a été éliminé.
- La directive listen a ajouté le support du paramètre multipath.
- La réutilisation des sessions SSL entre serveurs utilisant des certificats différents dans la directive ssl_trusted_certificate a été interdite lors de l'activation de la vérification des certificats SSL client.
- Un problème de réutilisation des sessions dans le contexte d'un autre a été résolu. serveur virtuel lors de l'utilisation de TLSv1.3 avec OpenSSL 1.1.1e+.
- Un problème lors de l'utilisation de zlib-ng a été résolu.
De plus, une version de njs 0.8.10 a été publiée, un module pour intégrer des interpréteurs du langage JavaScript dans le serveur http nginx. Il supporte la connexion à différents moteurs JavaScript. Comme moteur de base, le moteur QuickJS est proposé avec le support de la spécification ECMAScript 2023. Njs permet d'utiliser des scripts JavaScript dans la configuration pour étendre les capacités de nginx. Les scripts peuvent être utilisés pour définir une logique de traitement des requêtes avancée, générer des configurations, créer des réponses dynamiques, modifier des requêtes/réponses ou créer rapidement des solutions de contournement pour les problèmes des applications web.
Modifications dans njs 0.8.10 :
- Le moteur JavaScript QuickJS a ajouté un support pour l'API WebCrypto, TextEncoder et TextDecoder.
- Le moteur QuickJS a ajouté de nouveaux modules querystring, crypto et xml.
- Ajout du support pour la bibliothèque QuickJS-NG.
- Dans le module pour nginx, il a été implémenté la lecture du contenu de r.requestText et r.requestBuffer à partir d'un fichier temporaire.
Source : opennet.ru
