Nach 13 Monaten Entwicklung wurde der neue stabile Branch des leistungsstarken HTTP-Servers und Multi-Protokoll-Proxy-Servers nginx 1.22.0 vorgestellt, der die in der Hauptversion 1.21.x angesammelten Ănderungen aufgenommen hat. In Zukunft werden alle Ănderungen im stabilen Branch 1.22 mit der Beseitigung schwerwiegender Fehler und Schwachstellen verbunden sein. Bald wird der Hauptbranch nginx 1.23 gebildet, in dem die Entwicklung neuer Möglichkeiten fortgesetzt wird. FĂŒr normale Benutzer, die keine KompatibilitĂ€t mit Drittanbieter-Modulen gewĂ€hrleisten mĂŒssen, wird empfohlen, den Hauptbranch zu verwenden, auf dessen Basis alle drei Monate die Versionen des kommerziellen Produkts Nginx Plus erstellt werden.
Laut dem April-Bericht von Netcraft wird nginx auf 20,08 % aller aktiven Websites verwendet (vor einem Jahr 20,15 %, vor zwei Jahren 19,56 %), was dem zweiten Platz in dieser Kategorie entspricht (der Anteil von Apache liegt bei 22,58 % (vor einem Jahr 25,38 %), Cloudflare â 10,42 % (8,51 %), Google â 8,89 % (10,09 %). Dabei behĂ€lt nginx beim Betrachten aller Websites die FĂŒhrungsposition und macht 31,13 % des Marktes aus (vor einem Jahr 35,34 %, vor zwei Jahren 36,91 %), wĂ€hrend der Anteil von Apache 23,08 % (25,98 %) betrĂ€gt, OpenResty (Plattform auf Basis von nginx und LuaJIT) â 8,01 % (6,55 %), Cloudflare â 5,49 %, Microsoft IIS â 4 % (5,96 %).
Unter den millionen meistbesuchten Websites weltweit betrĂ€gt der Anteil von nginx 21,79 % (vor einem Jahr 23,06 %, vor zwei Jahren 25,54 %). Derzeit laufen etwa 361 Millionen Websites unter nginx (vor einem Jahr 419 Millionen). Laut W3Techs wird nginx auf 33,5 % der millionen meistbesuchten Websites eingesetzt; im Mai letzten Jahres lag dieser Wert bei 33,8 %, vorletztes Jahr bei 31,9 %. Der Anteil von Apache ist im Laufe des Jahres von 33,8 % auf 31,5 % gesunken, wĂ€hrend der Anteil von Microsoft IIS von 7 % auf 6 % gesunken ist. Der Anteil von LiteSpeed ist von 8,5 % auf 12,1 % gestiegen, und Node.js von 1,2 % auf 1,9 %. In Russland wird nginx auf 79,8 % der meistbesuchten Websites verwendet (vor einem Jahr â 79,1 %).
Die auffĂ€lligsten Verbesserungen, die im Verlauf der Bildung des Hauptbranches 1.21.x hinzugefĂŒgt wurden:
- In den Direktiven "proxy_ssl_certificate", "proxy_ssl_certificate_key", "grpc_ssl_certificate", "grpc_ssl_certificate_key", "uwsgi_ssl_certificate" und "uwsgi_ssl_certificate_key" wurde die UnterstĂŒtzung von Variablen hinzugefĂŒgt.
- Im E-Mail-Proxy-Modul wurde die UnterstĂŒtzung des âPipeliningâ-Modus fĂŒr die Ăbertragung mehrerer POP3- oder IMAP-Anfragen in einer Verbindung hinzugefĂŒgt, sowie eine neue Direktive âmax_errorsâ, die die maximale Anzahl an Protokollfehlern definiert, nach denen die Verbindung geschlossen wird.
- Die Ăbertragung der Header âAuth-SSL-Protocolâ und âAuth-SSL-Cipherâ wurde implementiert. zu einem Server Authentifizierung des E-Mail-Proxys.
- Im Stream-Modul wurde die UnterstĂŒtzung fĂŒr die TLS-Erweiterung ALPN hinzugefĂŒgt. Die Direktive ssl_alpn wird vorgeschlagen, um die Liste der unterstĂŒtzten ALPN-Protokolle (h2, http/1.1) zu bestimmen, und die Variable $ssl_alpn_protocol gibt Informationen ĂŒber das mit dem Client vereinbarte ALPN-Protokoll zurĂŒck.
- Im Stream-Modul wurde der Parameter "fastopen" hinzugefĂŒgt, der den âTCP Fast Openâ-Modus fĂŒr verbindende Sockets aktiviert.
- Die Escape-Zeichen fĂŒr «»», «», «\», «^», «`», «{«, «|» und «}» wurden beim Proxys mit URI-Ănderung implementiert.
- Im Stream-Modul wurde die Direktive proxy_half_close hinzugefĂŒgt, mit der das Verhalten beim SchlieĂen einer proxierten TCP-Verbindung auf einer der beiden Seiten (TCP half-close) konfiguriert werden kann.
- Im Modul ngx_http_mp4_module wurde die neue Direktive mp4_start_key_frame hinzugefĂŒgt, um einen Videostream ab dem SchlĂŒsselbild auszustrahlen.
- Die Variable $ssl_curve wurde hinzugefĂŒgt, die den Typ der fĂŒr die SchlĂŒsselvereinbarung in der TLS-Sitzung gewĂ€hlten elliptischen Kurve zurĂŒckgibt.
- Im Direktive âsendfile_max_chunkâ wurde der Standardwert auf 2 Megabyte geĂ€ndert.
- Die KompatibilitĂ€t mit der OpenSSL-Bibliothek 3.0 wurde sichergestellt. Die UnterstĂŒtzung fĂŒr den Aufruf von SSL_sendfile() bei Verwendung von OpenSSL 3.0 wurde hinzugefĂŒgt.
- Die Standardbuilds werden jetzt mit der PCRE2-Bibliothek bereitgestellt, die Funktionen zur Verarbeitung regulĂ€rer AusdrĂŒcke bietet.
- Beim Laden von Zertifikaten Server wurde die Verwendung von Sicherheitsstufen eingerichtet, die ab OpenSSL 1.1.0 unterstĂŒtzt werden und durch den Parameter â@SECLEVEL=Nâ in der Direktive ssl_ciphers festgelegt werden.
- Die UnterstĂŒtzung fĂŒr die Export-VerschlĂŒsselungssuite wurde eingestellt.
- Im API der Request-Body-Filterung wurde das Puffern der verarbeiteten Daten erlaubt.
- Auf der FreeBSD-Plattform wurde die UnterstĂŒtzung des Systemaufrufs sendfile verbessert, der fĂŒr die direkte DatenĂŒbertragung zwischen einem Dateideskriptor und einem Socket vorgesehen ist. Der sendfile-Modus (SF_NODISKIO) wird stĂ€ndig aktiviert und die UnterstĂŒtzung fĂŒr den sendfile-Modus (SF_NOCACHE) wurde hinzugefĂŒgt.
- Die UnterstĂŒtzung fĂŒr die Einrichtung von HTTP/2-Verbindungen mit der NPN-Erweiterung (Next Protocol Negotiation) anstelle von ALPN wurde eingestellt.
- Es wurde eine Blockierung von HTTP/1.0-Anfragen sichergestellt, die den HTTP-Header âTransfer-Encodingâ enthalten (dies wurde in der Version des HTTP/1.1-Protokolls eingefĂŒhrt).
- Der Schutz vor HTTP Request Smuggling-Angriffen auf Frontend-Backend-Systeme wurde verstĂ€rkt, wodurch unbefugte Zugriffe auf die Inhalte von Anfragen anderer Benutzer in denselben Stream zwischen Frontend und Backend möglich werden. Nginx gibt nun immer einen Fehler zurĂŒck, wenn die CONNECT-Methode verwendet wird; bei gleichzeitiger Angabe der Header "Content-Length" und "Transfer-Encoding"; sowie bei Vorhandensein von Leerzeichen oder Steuerzeichen in der Anfragezeichenfolge, im Namen des HTTP-Headers oder im Wert des "Host"-Headers.
Quelle: opennet.ru
