Die Veröffentlichung der Hauptversion nginx 1.27.5 wurde vorgestellt, in der die Entwicklung neuer Funktionen fortgesetzt wird. In der parallel unterstützten stabilen Version 1.26.x werden nur Änderungen zur Behebung schwerwiegender Fehler und Sicherheitsanfälligkeiten vorgenommen. Zukünftig wird auf Grundlage der Hauptversion 1.27.x eine stabile Version 1.28 gebildet. Der Projektcode ist in C geschrieben und wird unter der BSD-Lizenz verbreitet.
Unter den Änderungen in nginx 1.27.5:
- Für Verbindungen, die das QUIC-Protokoll nutzen, wurde die Unterstützung des CUBIC-Netzwerküberlastungssteuerungsalgorithmus (RFC 9438) hinzugefügt. Dieser Algorithmus erhöht die Größe des Überlastfensters schrittweise, bis Paketverluste auftreten, wonach die Fenstergröße auf den Wert vor dem Verlust zurückgesetzt wird. In durchgeführten Tests konnte durch die Verwendung von CUBIC die Übertragungszeit einer Datei mit 500 MB um 24 % bei einer Latenz von 40 ms und BDP 750 K (Bandwidth Delay Product) und um 73 % bei einer Latenz von 100 ms und BDP 9 M verkürzt werden.
- Die maximale Größe der in gemeinsam genutztem Speicher zwischenspeicherbaren SSL-Sitzungen wurde auf 8192 erhöht.
- Der Build mit der C-Bibliothek Musl wurde optimiert.
- Optimierungsarbeiten zur Leistungsverbesserung und Fehlerbehebung in der Implementierung von HTTP/3 wurden durchgeführt.
- Fehler in der Umsetzung der Direktiven „grpc_ssl_password_file“, „proxy_ssl_password_file“ und „uwsgi_ssl_password_file“ wurden behoben, die beim Laden SSL-Zertifikate und Schlüsseln aus Variablen auftraten.
- Probleme beim Setzen der Variablen $ssl_curve und $ssl_curves bei Verwendung von eingebundenen Implementierungen elliptischer Kurven in OpenSSL wurden behoben.
Darüber hinaus kann die Veröffentlichung stabiler Versionen des Projekts FreeNginx 1.27.5 und 1.27.6, einer aktiven Fork von Nginx, erwähnt werden. Die Entwicklung des Forks wird von Maxim Dunin, einem der Hauptentwickler von Nginx, geleitet. FreeNginx wird als ein Non-Profit-Projekt positioniert, das die Entwicklung des Nginx-Codebases ohne unternehmerisches Eingreifen sicherstellt.
Änderungen in FreeNginx 1.27.5 und 1.27.6:
- Probleme bei der Verwendung von OpenSSL 3.5 wurden behoben (in den Variablen $ssl_curve und $ssl_curves wurde der Name der Gruppe X25519MLKEM768 nicht angezeigt).
- Ein Absturz des Arbeitsprozesses in Konfigurationen mit der Direktive proxy_ssl_password_file wurde behoben, der bei der Angabe von Variablen in den Direktiven proxy_ssl_certificate und proxy_ssl_certificate_key auftrat.
- Die Unterstützung für den multipath-Parameter wurde zur Direktive listen hinzugefügt.
- Die Wiederverwendung von SSL-Sitzungen zwischen Servern, die unterschiedliche Zertifikate in der Direktive ssl_trusted_certificate verwenden, wurde bei aktivierter Überprüfung der Client-SSL-Zertifikate untersagt.
- Ein Problem mit der Wiederverwendung von Sitzungen im Kontext eines anderen wurde gelöst. virtuellen Server Dies trat bei der Verwendung von TLSv1.3 mit OpenSSL 1.1.1e+ auf.
- Ein Problem bei der Verwendung von zlib-ng wurde behoben.
Darüber hinaus wurde njs 0.8.10 veröffentlicht, ein Modul zur Integration von JavaScript-Interpretern in den http-Server nginx. Es wird die Verbindung verschiedener JavaScript-Engines unterstützt. Als Basis wird die hauseigene Engine QuickJS mit Unterstützung für die ECMAScript 2023-Spezifikation angeboten. Njs ermöglicht die Verwendung von JavaScript-Skripten in der Konfiguration, um die Funktionen von nginx zu erweitern. Skripte können verwendet werden, um erweiterte Logik zur Verarbeitung von Anfragen zu definieren, Konfigurationen zu erstellen, dynamische Antworten zu generieren, Anfragen/Antworten zu modifizieren oder schnell Platzhalter zur Lösung von Problemen in Webanwendungen zu erstellen.
Änderungen in njs 0.8.10:
- Im JavaScript-Engine QuickJS wurde die Unterstützung für die WebCrypto-API, TextEncoder und TextDecoder hinzugefügt.
- Im QuickJS-Engine wurden neue Module querystring, crypto und xml hinzugefügt.
- Unterstützung für die Bibliothek QuickJS-NG wurde hinzugefügt.
- Im nginx-Modul wurde das Lesen des Inhalts von r.requestText und r.requestBuffer aus einer temporären Datei implementiert.
Quelle: opennet.ru
