Die Hauptversion von Nginx 1.25.3 wurde veröffentlicht, in der die Entwicklung neuer Funktionen fortgesetzt wird. In der parallel unterstützten stabilen Version 1.24.x werden nur Änderungen zur Behebung schwerwiegender Fehler und Sicherheitsanfälligkeiten vorgenommen. Zukünftig wird auf Basis der Hauptversion 1.25.x eine stabile Version 1.26 erstellt. Das Projekt ist in C geschrieben und wird unter der BSD-Lizenz veröffentlicht.
Zu den Änderungen gehören:
- Erweiterter Schutz vor anomaler HTTP/2-Kundenaktivität, 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 Anfragen pro „keepalive_requests“-Verbindung (nach jeweils 1000 Anfragen wird die Verbindung zurückgesetzt) und auf die „limit_req“-Einschränkungen. Um schneller auf Überlastungen durch eine große Anzahl von Streams reagieren zu können, wurde eine zusätzliche Beschränkung eingeführt, die standardmäßig nicht mehr als 256 (2 * max_concurrent_streams) neue Streams pro Ereigniszyklus erlaubt. Diese neue Einschränkung ermöglicht es, Anfragen zu blockieren, bevor das Gesamtlimit der gleichzeitigen Streams erreicht wird, zum Beispiel wenn Streams asynchron verarbeitet oder zurückgesetzt werden. Eine ähnliche Änderung wurde auch im Release angie 1.3.1 (ein Fork von nginx), das vor einer Woche veröffentlicht wurde, aufgenommen.
- Verbesserte Verwaltung der Puffer, die bei der automatischen Erkennung von HTTP/2-Verbindungen verwendet werden.
- Die Leistung beim Start von Konfigurationen mit einer großen Anzahl von „location“-Direktiven wurde erhöht.
- Das unerwartete Beenden des Arbeitsprozesses, das beim Versuch, HTTP/2 zu verwenden, auftrat, wurde behoben. SSL.
- Die inkorrekte Verarbeitung des vom Backend zurückgegebenen Headers 'Status' mit leerem Erklärungstext wurde korrigiert.
- Eine Speicherleckage während der Rekonfiguration, die beim Bauen mit der PCRE2-Bibliothek auftrat, wurde beseitigt.
- Eine erhebliche Anzahl von Korrekturen und Verbesserungen bezüglich der Unterstützung des HTTP/3-Protokolls wurde vorgenommen.
Zugleich wurde njs 0.8.2 veröffentlicht, der JavaScript-Interpreter für Webserver nginx. Der njs-Interpreter setzt die ECMAScript-Standards um und ermöglicht die Erweiterung der Möglichkeiten von nginx zur Anforderungsverarbeitung mit Skripten in der Konfiguration. Skripte können in der Konfigurationsdatei verwendet werden, um erweiterte Logik zur Anforderungsverarbeitung zu definieren, die Konfiguration zu erstellen, Antworten dynamisch zu generieren, Anfragen/Antworten zu modifizieren oder schnell Platzhalter zur Problemlösung 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 Modul fs wurde die Methode fs.existsSync() hinzugefügt.
Es wurde auch die Veröffentlichung des Application Servers NGINX Unit 1.31.1 bekannt gegeben, der eine Lösung für den Betrieb von Webanwendungen in verschiedenen Programmiersprachen (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js und Java) bietet. Unter der Verwaltung von NGINX Unit können mehrere Anwendungen in unterschiedlichen Programmiersprachen gleichzeitig laufen, deren Startparameter dynamisch geändert werden können, ohne dass Konfigurationsdateien bearbeitet oder ein Neustart erforderlich ist. Neben der Behebung von Fehlern in der neuen Version ermöglicht das Wasm-Modul das Laden von Daten, die größer als 4 GB sind, und bietet die Möglichkeit zur Festlegung von HTTP-Statuscodes in der Antwort.
Quelle: opennet.ru
