Veröffentlichung von Nginx 1.19.7, NJS 0.5.1 und NGINX Unit 1.22.0

Es wurde die Veröffentlichung des Hauptzweigs von Nginx 1.19.7 erstellt, in dem die Entwicklung neuer Funktionen fortgesetzt wird (im parallel unterstützten stabilen Zweig 1.18 werden nur Änderungen im Zusammenhang mit der Beseitigung schwerwiegender Fehler und Schwachstellen vorgenommen).

Wichtigste Änderungen:

  • Wenn einem Arbeitsprozess die freien Verbindungen ausgehen, schließt Nginx jetzt nicht nur Keepalive-Verbindungen, sondern auch Verbindungen, die auf das Schließen des Sockets warten („verweilendes Schließen“).
  • Der Verbindungsverarbeitungscode in HTTP/2 ähnelt der HTTP/1.x-Implementierung. Die Unterstützung der einzelnen Einstellungen „http2_recv_timeout“, „http2_idle_timeout“ und „http2_max_requests“ wurde zugunsten der allgemeinen Anweisungen „keepalive_timeout“ und „keepalive_requests“ eingestellt.
  • Die Einstellungen „http2_max_field_size“ und „http2_max_header_size“ wurden entfernt und stattdessen sollte „large_client_header_buffers“ verwendet werden.

Gleichzeitig wurde njs 0.5.1 veröffentlicht, ein JavaScript-Interpreter für den Nginx-Webserver. Der njs-Interpreter implementiert ECMAScript-Standards und ermöglicht es Ihnen, die Fähigkeit von nginx zur Verarbeitung von Anforderungen mithilfe von Skripten in der Konfiguration zu erweitern. Skripte können in einer Konfigurationsdatei verwendet werden, um erweiterte Logik für die Verarbeitung von Anfragen, die Generierung einer Konfiguration, die dynamische Generierung einer Antwort, die Änderung einer Anfrage/Antwort oder die schnelle Erstellung von Stubs zur Lösung von Problemen in Webanwendungen zu definieren.

Die neue Version fügt die Direktive „js_header_filter“ hinzu, mit der Sie eine JavaScript-Funktion zum Filtern und Ändern beliebiger Antwortheader festlegen können: js_import foo.js; Standort / { js_header_filter foo.filter; Proxy_Pass http://127.0.0.1:8081/; } foo.js: function filter(r) { varcookies = r.headersOut['Set-Cookie']; var len = r.args.len ? Number(r.args.len) : 0; r.headersOut['Set-Cookie'] =cookies.filter(v=>v.length > len); } Standard exportieren {filter};

Außerdem wurde die Methode ngx.fetch() hinzugefügt, die die Fetch-API implementiert, die HTTP-Client-Funktionalität bereitstellt. Die Methode unterstützt die Verarbeitung der Optionen Body, Header, buffer_size und max_response_body_size. Das zurückgegebene Response-Objekt unterstützt die Methoden arrayBuffer(), bodyUsed, json(), headers, ok, redirect, status, statusText, text(), type und url, und das Header-Objekt unterstützt get(), getAll() und has() Methoden. Funktion fetch(r) { ngx.fetch('http://nginx.org/') .then(reply => reply.text()) .then(body => r.return(200, body)) .catch (e => r.return(501, e.message)); }

Beachten Sie auch die Veröffentlichung des Anwendungsservers NGINX Unit 1.22, der eine Lösung zum Ausführen von Webanwendungen in verschiedenen Programmiersprachen (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js und Java) bietet. NGINX Unit kann gleichzeitig mehrere Anwendungen in verschiedenen Programmiersprachen ausführen, deren Startparameter dynamisch geändert werden können, ohne dass Konfigurationsdateien bearbeitet und neu gestartet werden müssen. Der Code ist in C geschrieben und wird unter der Apache 2.0-Lizenz vertrieben.

Die neue Version von NGINX Unit konzentrierte sich auf die Verbesserung der Stabilität, die Erweiterung der Testtools und die Behebung von Fehlern. In den für Linux generierten Paketen wurden der Benutzer und die Gruppe, unter denen NGINX Unit läuft, geändert. Anstelle von „nobody:nobody“ laufen Prozesse nun unter der einzelnen Benutzereinheit in der Gruppeneinheit. Gewährleistete Kompatibilität mit der Stream-API der ServerRequest- und ServerResponse-Objekte aus dem Node.js-Modul. Die Option „Pfad“ für Python-Anwendungen ermöglicht die Angabe mehrerer Verzeichnisse.

Source: opennet.ru

Kommentar hinzufügen