La publication de la branche principale nginx 1.19.7 a été formée, au sein de laquelle le développement de nouvelles fonctionnalités se poursuit (la branche stable 1.18, maintenue en parallÚle, ne reçoit que des modifications liées à la correction de bogues sérieux et de vulnérabilités).
Principales modifications :
- Lorsque le processus de travail manque de connexions libres, nginx ferme désormais non seulement les connexions keepalive, mais aussi celles en attente de fermeture de socket (« lingering close »).
- Le code de traitement des connexions dans HTTP/2 est désormais proche de l'implémentation de HTTP/1.x. Le support des directives individuelles 'http2_recv_timeout', 'http2_idle_timeout' et 'http2_max_requests' a été abandonné au profit des directives générales 'keepalive_timeout' et 'keepalive_requests'.
- Les réglages 'http2_max_field_size' et 'http2_max_header_size' ont été supprimés, à la place, il convient d'utiliser 'large_client_header_buffers'.
Lancement simultanĂ© de njs 0.5.1, l'interprĂ©teur JavaScript pour serveur web nginx. L'interprĂ©teur njs implĂ©mente les normes ECMAScript et permet d'Ă©tendre les capacitĂ©s de nginx pour traiter les requĂȘtes Ă l'aide de scripts dans la configuration. Les scripts peuvent ĂȘtre utilisĂ©s dans le fichier de configuration pour dĂ©finir une logique de traitement des requĂȘtes amĂ©liorĂ©e, gĂ©nĂ©rer dynamiquement des rĂ©ponses, modifier des requĂȘtes/rĂ©ponses ou crĂ©er rapidement des maquettes pour rĂ©soudre des problĂšmes dans des applications web.
La nouvelle version ajoute la directive 'js_header_filter', permettant de spĂ©cifier une fonction JavaScript pour filtrer et modifier des en-tĂȘtes de rĂ©ponse arbitraires : js_import foo.js; location / { js_header_filter foo.filter; proxy_pass http://127.0.0.1:8081/; } foo.js : function filter(r) { var cookies = r.headersOut['Set-Cookie']; var len = r.args.len ? Number(r.args.len) : 0; r.headersOut['Set-Cookie'] = cookies.filter(v => v.length > len); } export default {filter};
Un nouveau méthode ngx.fetch() a également été ajoutée, implémentant l'API Fetch, qui fournit des fonctionnalités de client HTTP. La méthode supporte le traitement des options body, headers, buffer_size et max_response_body_size. Dans l'objet Response, les méthodes supportées sont arrayBuffer(), bodyUsed, json(), headers, ok, redirect, status, statusText, text(), type et url, tandis que dans l'objet Header, les méthodes get(), getAll() et has(). function fetch(r) { ngx.fetch('http://nginx.org/') .then(reply => reply.text()) .then(body => r.return(200, body)) .catch(e => r.return(501, e.message)); }
Il convient Ă©galement de noter la publication de serveurs L'application NGINX Unit 1.22 offre une solution pour dĂ©ployer des applications web dans divers langages de programmation (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js et Java). Sous la gestion de NGINX Unit, plusieurs applications dans diffĂ©rents langages peuvent ĂȘtre exĂ©cutĂ©es simultanĂ©ment, avec des paramĂštres de dĂ©marrage modifiables dynamiquement sans avoir Ă Ă©diter des fichiers de configuration ou Ă redĂ©marrer. Le code est Ă©crit en C et est distribuĂ© sous la licence Apache 2.0.
La nouvelle version de NGINX Unit se concentre sur l'amélioration de la stabilité, l'élargissement des outils de test et la correction de bogues. Dans les paquets généraux pour Linux, l'utilisateur et le groupe sous lesquels NGINX Unit s'exécute ont été modifiés. Au lieu de nobody:nobody, les processus s'exécutent désormais sous un utilisateur distinct unit dans le groupe unit. La compatibilité avec l'API Stream des objets ServerRequest et ServerResponse du module Node.js a été assurée. Dans l'option « path » pour les applications Python, il est désormais permis d'indiquer plusieurs répertoires.
Source : opennet.ru
