Sortie de nginx 1.19.7, njs 0.5.1 et NGINX Unit 1.22.0

La branche principale de nginx 1.19.7 a été publiée, au sein de laquelle le développement de nouvelles fonctionnalités se poursuit (dans la branche stable 1.18 prise en charge en parallèle, seules les modifications liées à l'élimination des erreurs et vulnérabilités graves sont apportées).

Les principaux changements:

  • Lorsqu'un processus de travail manque de connexions libres, nginx ferme désormais non seulement les connexions keepalive, mais également les connexions en attente de fermeture du socket (« fermeture persistante »).
  • Le code de traitement de la connexion dans HTTP/2 est proche de l'implémentation HTTP/1.x. La prise en charge des paramètres individuels "http2_recv_timeout", "http2_idle_timeout" et "http2_max_requests" a été abandonnée au profit des directives générales "keepalive_timeout" et "keepalive_requests".
  • Les paramètres "http2_max_field_size" et "http2_max_header_size" ont été supprimés et "large_client_header_buffers" doivent être utilisés à la place.

Au même moment, njs 0.5.1 est sorti, un interpréteur JavaScript pour le serveur Web nginx. L'interpréteur njs implémente les normes ECMAScript et vous permet d'étendre la capacité de nginx à traiter les requêtes à l'aide de scripts dans la configuration. Les scripts peuvent être utilisés dans un fichier de configuration pour définir une logique avancée pour traiter les demandes, générer une configuration, générer dynamiquement une réponse, modifier une demande/réponse ou créer rapidement des stubs pour résoudre des problèmes dans les applications Web.

La nouvelle version ajoute la directive « js_header_filter », qui vous permet de définir une fonction JavaScript pour filtrer et modifier les en-têtes de réponse arbitraires : js_import foo.js ; emplacement / { 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 ? Nombre(r.args.len) : 0; r.headersOut['Set-Cookie'] = cookies.filter(v=>v.length > len); } exporter le {filtre} par défaut ;

La méthode ngx.fetch() est également ajoutée, qui implémente l'API Fetch, qui fournit la fonctionnalité client HTTP. La méthode prend en charge le traitement des options body, headers, buffer_size et max_response_body_size. L'objet Response renvoyé prend en charge les méthodes arrayBuffer(), bodyUsed, json(), headers, ok, redirect, status, statusText, text(), type et url, et l'objet Header prend en charge get(), getAll() et has(). méthodes. function fetch(r) { ngx.fetch('http://nginx.org/') .then(réponse => réponse.text()) .then(body => r.return(200, body)) .catch (e => r.return(501, e.message)); }

A noter également la publication du serveur d'applications NGINX Unit 1.22, qui propose une solution pour exécuter des applications web dans différents langages de programmation (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js et Java). NGINX Unit peut exécuter simultanément plusieurs applications dans différents langages de programmation, dont les paramètres de lancement peuvent être modifiés dynamiquement sans qu'il soit nécessaire de modifier les fichiers de configuration et de redémarrer. Le code est écrit en C et distribué sous la licence Apache 2.0.

La nouvelle version de NGINX Unit s'est concentrée sur l'amélioration de la stabilité, l'extension des outils de test et la correction des bogues. Dans les packages générés pour Linux, l'utilisateur et le groupe sous lesquels NGINX Unit s'exécute ont été modifiés. Au lieu de personne : personne, les processus s'exécutent désormais sous l'unité utilisateur individuelle du groupe d'unités. Compatibilité assurée avec l'API Stream des objets ServerRequest et ServerResponse du module Node.js. L'option "path" pour les applications Python permet de spécifier plusieurs répertoires.

Source: opennet.ru

Ajouter un commentaire