Veröffentlichung von nginx 1.25.3, njs 0.8.2 und NGINX Unit 1.31.1

Die Veröffentlichung des Hauptzweigs nginx 1.25.3 wurde erstellt, in dessen Rahmen die Entwicklung neuer Funktionen fortgesetzt wird. Im parallel unterstützten stabilen Zweig 1.24.x werden nur Änderungen bezüglich schwerwiegender Fehler und Sicherheitsanfälligkeiten vorgenommen. Zukünftig wird auf der Basis des Hauptzweigs 1.25.x ein stabiler Zweig 1.26 gebildet. Der Projektcode ist in der Programmiersprache C geschrieben und wird unter der BSD-Lizenz verbreitet.

Unter den Änderungen:

  • Der Schutz vor anormalen Aktivitäten von HTTP/2-Clients wurde verstärkt, insbesondere vor DoS-Angriffen der Klasse „Rapid Reset“, bei denen eine große Anzahl sofort zurückgesetzter Streams innerhalb einer einzigen HTTP/2-Verbindung erzeugt wird. In der Standardkonfiguration stoßen solche Angriffe auf das Limit der „keepalive_requests“ (nach jeweils 1000 Anfragen wird die Verbindung zurückgesetzt) und auf die „limit_req“-Einschränkungen. Um schneller auf Anfragenfluten über viele Streams zu reagieren, wurde eine zusätzliche Beschränkung eingeführt, die es standardmäßig nicht erlaubt, mehr als 256 (2 * max_concurrent_streams) neue Streams pro Ereignisverarbeitungsschleife zu erstellen. Diese neue Beschränkung ermöglicht es, Anfragen zu blockieren, bevor das Gesamtlimit der gleichzeitigen Streams erreicht wird, zum Beispiel wenn die Streams asynchron verarbeitet oder zurückgesetzt werden. Eine ähnliche Änderung wurde auch in die Veröffentlichung von angie 1.3.1 (Fork von nginx) aufgenommen, die vor einer Woche veröffentlicht wurde.
  • Die Verwaltung der Buffer, die bei der automatischen Bestimmung von HTTP/2-Verbindungen verwendet werden, wurde verbessert.
  • Die Leistung beim Starten von Konfigurationen mit einer großen Anzahl von „location“-Direktiven wurde erhöht.
  • Ein Absturz des Arbeitsprozesses wurde behoben, der beim Versuch auftrat, HTTP/2 ohne SSL.
  • Eine fehlerhafte Verarbeitung des vom Backend zurückgegebenen Headers „Status“ mit leerem erläuterndem Text wurde behoben.
  • Ein Speicherleck während der Neukonfiguration wurde behoben, das beim Kompilieren mit der PCRE2-Bibliothek auftrat.
  • Eine große Anzahl von Korrekturen und Verbesserungen zur Unterstützung des HTTP/3-Protokolls wurde vorgenommen.

Gleichzeitig wurde njs 0.8.2 veröffentlicht, ein Interpreter für die Programmiersprache JavaScript für Webserver. nginx. Der njs-Interpreter implementiert die ECMAScript-Standards und ermöglicht es, die Möglichkeiten von nginx zur Verarbeitung von Anfragen durch Skripte in der Konfiguration zu erweitern. Skripte können in der Konfigurationsdatei verwendet werden, um erweiterte Logik zur Verarbeitung von Anfragen zu definieren, die Konfiguration zu gestalten, dynamisch Antworten zu generieren, Anfragen/Antworten zu modifizieren oder schnell Platzhalter zur Lösung von Problemen in Webanwendungen zu erstellen. In der neuen Version wurde das Objekt console hinzugefügt, das die Methoden error(), info(), log(), time(), timeEnd() und warn() bereitstellt. Im fs-Modul wurde die Methode fs.existsSync() hinzugefügt.

Ebenfalls hervorzuheben ist die Veröffentlichung des Anwendungsservers NGINX Unit 1.31.1, der eine Lösung zur Ausführung von Webanwendungen in verschiedenen Programmiersprachen (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js und Java) bietet. Unter der Verwaltung von NGINX Unit können gleichzeitig mehrere Anwendungen in verschiedenen Programmiersprachen ausgeführt werden, deren Startparameter dynamisch ohne Bearbeitung der Konfigurationsdateien und Neustart geändert werden können. Neben der Fehlerbehebung ermöglicht die neue Version im Wasm-Modul den Upload von Daten mit einer Größe von mehr als 4 GB, während bei Antworten die Möglichkeit besteht, HTTP-Statuscodes zu setzen.

Quelle: opennet.ru

60GB SSD 8Gb DDR4