Veröffentlichung von nginx 1.30.0 und des Forks FreeNginx 1.30.0.

Nach einem Jahr Entwicklung wurde der neue stabile Branch des leistungsstarken HTTP-Servers und des Multi-Protocol-Proxy-Servers nginx 1.30.0 veröffentlicht, der die Änderungen aus dem Hauptbranch 1.29.x zusammenfasst. Zukünftige Änderungen im stabilen Branch 1.30 werden sich auf die Behebung schwerwiegender Fehler und Sicherheitsanfälligkeiten konzentrieren. Bald wird der Hauptbranch nginx 1.31 gebildet, in dem die Entwicklung neuer Funktionen fortgesetzt wird. Für normale Nutzer, die keine Kompatibilität mit Drittanbieter-Modulen sicherstellen müssen, wird empfohlen, den Hauptbranch zu verwenden, auf dessen Basis alle drei Monate die kommerziellen Versionen von Nginx Plus veröffentlicht werden. Der Code von nginx ist in C geschrieben und wird unter der BSD-Lizenz veröffentlicht.

Laut dem Februar-Bericht von Netcraft betreiben etwa 321 Millionen Websites nginx (vor einem Jahr 245 Millionen, vor zwei Jahren 243 Millionen, vor drei Jahren 289 Millionen). Nginx wird auf 16,08 % aller aktiven Websites eingesetzt (vor einem Jahr 17,89 %, vor zwei Jahren 18,15 %, vor drei Jahren 18,94 %), was den zweiten Platz in dieser Kategorie ausmacht (Anteil von Apache entspricht 13,27 % (vor einem Jahr 16,03 %, vor zwei Jahren 20,09 %, vor drei Jahren 20,52 %), Cloudflare – 20,62 % (17,81 %, 14,12 %, 11,32 %), Google – 10,65 % (9,89 %, 10,41 %, 9,89 %).

Wenn man alle Websites betrachtet, behält nginx die Führungsposition mit einem Marktanteil von 22,65 % (vor einem Jahr 20,48 %, vor zwei Jahren 22,31 %, vor drei Jahren 25,94 %), während der Anteil von Apache 12,19 % beträgt (16,03 %, 20,17 %, 20,58 %), Cloudflare – 15,27 % (12,87 %, 11,24 %, 10,17 %), OpenResty (eine Plattform basierend auf nginx und LuaJIT) – 8,01 % (9,36 %, 7,93 %, 7,94 %).

Unter den million beliebtesten Websites weltweit belegt nginx den zweiten Platz mit einem Anteil von 19,85 % (vor einem Jahr 20,37 %, vor zwei Jahren 20,63 %, vor drei Jahren 21,37 %). Den ersten Platz hält Cloudflare – 26,84 % (22,32 %, 22,59 %, 21,62 %). Der Anteil von Apache httpd beträgt 15,84 % (17,95 %, 20,09 %, 21,18 %). Veröffentlichung von nginx 1.30.0 und des Forks FreeNginx 1.30.0.

Laut W3Techs wird Nginx auf 32,8 % der Millionen meistbesuchten Websites eingesetzt (im April des letzten Jahres lag dieser Wert bei 33,8 %, im Jahr davor bei 34,3 %). Der Marktanteil von Apache ist im Laufe des Jahres von 26,3 % auf 23,9 % gesunken, der Marktanteil von Microsoft IIS von 4 % auf 3,4 %, während der Anteil von Caddy von 0,3 % auf 0,2 % gefallen ist. Der Anteil von Node.js ist von 4,4 % auf 6,0 % gestiegen, und der Anteil von LiteSpeed von 14,6 % auf 15,2 %.

Die bemerkenswertesten Verbesserungen, die in der Hauptversion 1.29.x hinzugefügt wurden:

  • Die Unterstützung für die TLS-Erweiterung ECH (Encrypted ClientHello) wurde hinzugefügt. Diese Erweiterung baut auf der ESNI (Encrypted Server Name Indication) auf und wird verwendet, um Informationen über TLS-Sitzungsparameter, wie den angeforderten Domainnamen, zu verschlüsseln. Der Schlüsselunterschied zwischen ECH und ESNI besteht darin, dass bei ECH anstelle der Verschlüsselung auf Feldebene die gesamte ClientHello-Nachricht verschlüsselt wird, was das Auslaufen von Daten durch Felder, die nicht von ESNI abgedeckt sind, wie das PSK (Pre-Shared Key)-Feld, blockiert. Die Verwendung von ECH kann durch die Angabe in der Anweisung „ssl_ech_file“ in der Konfigurationsdatei ECHConfig im PEM-Format aktiviert werden. Die Unterstützung ist bei der Verwendung von OpenSSL-Builds mit ECH verfügbar.
  • Unterstützung des Multipath TCP-Protokolls (MPTCP) hinzugefügt, das das gleichzeitige Senden von Paketen über mehrere Routen über verschiedene Netzwerkinterfaces ermöglicht. Um dies zu aktivieren, wurde der Parameter „multipath“ zur Direktive „listen“ hinzugefügt.
  • Die Möglichkeit, Client-Sitzungen an dieselben Server in einer Gruppe zu binden, wurde hinzugefügt. Es stehen drei Methoden zur Verfügung: „cookie“ – Übertragung der Daten über das gewählte Cookie; „route“ – der Proxy-Server weist dem Client bei Erhalt der ersten Anfrage eine Route zu; „learn“ – Nginx analysiert die Antworten vom Upstream-Server und merkt sich die gestarteten Server-Sitzungen. Um die Bindung einzustellen, wurde der Direktive „sticky“ im Block „upstream“ des Moduls „http“ hinzugefügt, und die Parameter „route“ und „drain“ wurden der Direktive „server“ hinzugefügt. Server mittels des angegebenen Cookies; „route“ – der proxied Server weist dem Kunden eine Route zu, wenn die erste Anfrage eingeht; „learn“ – Nginx analysiert die Antworten vom Upstream-Server und merkt sich die begonnenen Sitzungen. Zur Konfiguration der Bindung wurde die Direktive „sticky“ im Block „upstream“ des „http“-Moduls hinzugefügt, und die Parameter „route“ und „drain“ wurden in die Direktive „server“ eingebaut.
  • Die Direktive „early_hints“ wurde hinzugefügt, und HTTP-Code 103 wird in den Antworten von Proxy- und gRPC-Backends unterstützt. Code 103 ermöglicht es, den Client über den Inhalt bestimmter HTTP-Header sofort nach der Anfrage zu informieren, ohne auf den Abschluss aller mit der Anfrage verbundenen Operationen und die Bereitstellung des Inhalts durch den Server zu warten. Auf diese Weise können Hinweise zu Elementen gegeben werden, die mit der zurückgegebenen Seite verknüpft sind und vorab geladen werden können (zum Beispiel Links zu den auf der Seite verwendeten CSS- und JavaScript-Dateien). Wenn der Browser über solche Ressourcen informiert wird, beginnt er mit deren Laden, ohne auf die Fertigstellung der Hauptseite zu warten, wodurch die gesamte Verarbeitungszeit der Anfrage verkürzt wird.
  • Die Direktiven add_header_inherit und add_trailer_inherit wurden hinzugefügt, um die Regeln für die Vererbung der in den Direktiven add_header und add_trailer angegebenen Werte zu ändern. Der Parameter „off“ hebt die Vererbung von Werten auf, während der Parameter „merge“ das Hinzufügen von Werten von der vorherigen Ebene zu den Werten auf der aktuellen Ebene aktiviert.
  • Die Direktive „ssl_certificate_compression“ wurde hinzugefügt, um die Kompression zu steuern. TLS-Zertifikaten.
  • Die max_headers-Direktive wurde hinzugefügt, die die maximale Anzahl von HTTP-Headern in einer Anfrage begrenzt. Bei Überschreitung des Limits wird ein Fehler 400 (Bad Request) zurückgegeben. Diese Funktion wurde aus FreeNginx übernommen.
  • Die Variablen $request_port und $is_request_port wurden hinzugefügt. Die erste Variable enthält die Portnummer aus der URI-Komponente oder aus dem "Host"-Header, während die zweite "":" enthält, wenn die Variable $request_port nicht leer ist.
  • Die Variablen $ssl_sigalg und $ssl_client_sigalg wurden hinzugefügt, die den Namen des Algorithmus zur Erstellung von digitalen Signaturen für die TLS-Verbindung enthalten.
  • Dem Direktiv "geo" wurde der Parameter "volatile" hinzugefügt, der das Caching der Variable deaktiviert. Masken sind im im Block "geo" angegebenen Direktiv "include" erlaubt.
  • Im Block "upstream" ist die Direktive "keepalive" nun standardmäßig aktiviert. Der Direktive "keepalive", die im Block "upstream" verwendet wird, wurde der Parameter "local" hinzugefügt. Bei Angabe dieses Parameters wird anstelle der gemeinsamen Nutzung einer Verbindung zu einem allgemeinen upstream-Server, der in verschiedenen Blocks location und server erwähnt wird, für jeden Block eine separate Verbindung zum upstream aufrechterhalten.
  • Im Proxy-Modus ist standardmäßig die HTTP-Version 1.1 mit aktiviertem Keep-Alive-Modus festgelegt (im Modul ngx_http_proxy_module ist die Unterstützung für Keep-Alive standardmäßig aktiviert, und der Wert "1.1" wird im Direktiv "proxy_http_version" festgelegt, während die standardmäßige Versendung des Headers "Connection" eingestellt wurde).
  • Im Modul ngx_http_proxy wurde die Unterstützung des HTTP/2-Protokolls hinzugefügt, was die Verwendung von HTTP/2 beim Zugriff auf Backends ermöglicht.
  • Es besteht die Möglichkeit, kryptografische Schlüssel aus Hardware-Token hochzuladen, wobei die OpenSSL-Bibliothek als Anbieter verwendet wird.
  • Die Unterstützung für den 0-RTT-Modus wurde in die QUIC-Protokollimplementierung integriert, verfügbar auf Systemen mit OpenSSL 3.5.1 und neueren Versionen.
  • Die Unterstützung der kryptografischen Bibliothek AWS-LC, die von Amazon entwickelt wird, wurde hinzugefügt.
  • Die Kompression von TLSv1.3-Zertifikaten ist standardmäßig deaktiviert.
  • Die Kompatibilität mit der OpenSSL 4.0-Bibliothek wurde sichergestellt.

Zusätzlich kann die Veröffentlichung der Version 1.30.0 des FreeNginx-Projekts erwähnt werden, das einen Fork von Nginx entwickelt. Die Entwicklung des Forks wird von Maxim Dunin geleitet, einem der Schlüsselentwickler von Nginx. FreeNginx wird als gemeinnütziges Projekt positioniert, das die Entwicklung der Nginx-Codebasis ohne Unternehmensintervention ermöglicht. Der Code von FreeNginx wird weiterhin unter der BSD-Lizenz bereitgestellt. Zu den Änderungen in der FreeNginx 1.30-Zweig gehören: Unterstützung der TLS-Erweiterung ECH (Encrypted Client Hello) hinzugefügt; verbesserte Verarbeitung der Direktive limit_rate; hinzugefügte Direktiven send_min_rate und client_body_min_rate; realisierte Möglichkeit zur Begrenzung der Anzahl der Verbindungen und der Intensität von Anfragen in der Mail-Proxy; Unterstützung von GeoIP2-Datenbanken im GeoIP-Modul hinzugefügt; verbesserter Schutz des XSLT-Moduls.

Quelle: opennet.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster