Nach einem Jahr der Entwicklung wurde der neue stabile Zweig des leistungsstarken HTTP-Servers und des Multi-Protocol-Proxys nginx 1.20.0 prĂ€sentiert, der die in der Hauptversion 1.19.x gesammelten Ănderungen enthĂ€lt. ZukĂŒnftige Ănderungen im stabilen Zweig 1.20 werden sich auf die Beseitigung schwerwiegender Fehler und SicherheitsanfĂ€lligkeiten konzentrieren. Bald wird der Hauptzweig nginx 1.21 gebildet, in dem die Entwicklung neuer Funktionen fortgesetzt wird. FĂŒr gewöhnliche Benutzer, die keine Anforderungen an die KompatibilitĂ€t mit Drittanbieter-Modulen haben, wird die Verwendung des Hauptzweigs empfohlen, aus dem alle drei Monate kommerzielle Produktversionen von Nginx Plus erstellt werden.
Laut dem Bericht von Netcraft im MĂ€rz wird nginx auf 20,15 % aller aktiven Websites verwendet (vor einem Jahr 19,56 %, vor zwei Jahren 20,73 %), was dem zweiten Platz in dieser Kategorie entspricht (der Marktanteil von Apache betrĂ€gt 25,38 % (vor einem Jahr 27,64 %), Google â 10,09 %, Cloudflare â 8,51 %. Betrachten wir alle Websites, bleibt nginx mit 35,34 % MarktfĂŒhrer (vor einem Jahr 36,91 %, vor zwei Jahren â 27,52 %), wĂ€hrend der Marktanteil von Apache 25,98 % betrĂ€gt, OpenResty (eine Plattform basierend auf nginx und LuaJIT) â 6,55 %, Microsoft IIS â 5,96 %.
Unter den millionen meistbesuchten Websites der Welt betrĂ€gt der Anteil von nginx 25,55 % (vor einem Jahr 25,54 %, vor zwei Jahren 26,22 %). Derzeit betreibt nginx etwa 419 Millionen Websites (vor einem Jahr 459 Millionen). Laut W3Techs wird nginx auf 33,7 % der Websites aus der Million der meistbesuchten genutzt, im April des letzten Jahres lag dieser Wert bei 31,9 %, im Jahr davor bei 41,8 %, was auf die separate ZĂ€hlung des Cloudflare HTTP-Servers zurĂŒckzufĂŒhren ist. Der Anteil von Apache sank im Laufe des Jahres von 39,5 % auf 34 %, wĂ€hrend der Anteil von Microsoft IIS von 8,3 % auf 7 % fiel. Der Marktanteil von LiteSpeed stieg von 6,3 % auf 8,4 %, wĂ€hrend Node.js von 0,8 % auf 1,2 % zunahm. In Russland wird nginx auf 79,1 % der meistbesuchten Websites verwendet (vor einem Jahr â 78,9 %).
Die auffĂ€lligsten Verbesserungen, die im Laufe der Bildung des Hauptzweigs 1.19.x hinzugefĂŒgt wurden:
- Die Möglichkeit zur ĂberprĂŒfung von Kunden-Zertifikaten unter Einbeziehung externer Dienste auf der Grundlage des OCSP-Protokolls (Online Certificate Status Protocol) wurde hinzugefĂŒgt. Um die ĂberprĂŒfung zu aktivieren, wird die Direktive ssl_ocsp vorgeschlagen, zur Konfiguration der Cache-GröĂe â ssl_ocsp_cache, zur Ăberschreibung der im Zertifikat angegebenen OCSP-Handler-URL â ssl_ocsp_responder.
- Das Modul ngx_stream_set_module wurde hinzugefĂŒgt, das es ermöglicht, den Wert einer Variablen zuzuweisen. server { listen 12345; set $true 1; }
- Die Direktive proxy_cookie_flags wurde hinzugefĂŒgt, um Flags fĂŒr Cookies in proxierten Verbindungen anzugeben. Zum Beispiel, um das Flag âhttponlyâ zu Cookie âoneâ hinzuzufĂŒgen, und fĂŒr alle anderen Cookies die Flags ânosecureâ und âsamesite=strictâ zu verwenden: proxy_cookie_flags one httponly; proxy_cookie_flags ~ nosecure samesite=strict;
Eine Ă€hnliche Direktive userid_flags zur HinzufĂŒgung von Flags zu Cookies wurde ebenfalls fĂŒr das Modul ngx_http_userid implementiert.
- Die Direktiven âssl_conf_commandâ, âproxy_ssl_conf_commandâ, âgrpc_ssl_conf_commandâ und âuwsgi_ssl_conf_commandâ wurden hinzugefĂŒgt, mit denen beliebige Parameter fĂŒr die Konfiguration von OpenSSL festgelegt werden können. Zum Beispiel, um die Chiffren ChaCha zu priorisieren und die Chiffren TLSv1.3 zu konfigurieren, kann angegeben werden: ssl_conf_command Options PrioritizeChaCha; ssl_conf_command Ciphersuites TLS_CHACHA20_POLY1305_SHA256;
- Die Direktive âssl_reject_handshakeâ wurde hinzugefĂŒgt, die alle Verhandlungsversuche ablehnt. SSL-Verbindungen (zum Beispiel kann sie verwendet werden, um alle Anfragen mit unbekannten Hostnamen im SNI-Feld abzulehnen). server { listen 443 ssl; ssl_reject_handshake on; } server { listen 443 ssl; server_name example.com; ssl_certificate example.com.crt; ssl_certificate_key example.com.key; }
- Im Mail-Proxy wurde die Direktive proxy_smtp_auth hinzugefĂŒgt, die es ermöglicht, Benutzer im Backend mit dem Befehl AUTH und dem PLAIN SASL-Mechanismus zu authentifizieren.
- Die Direktive âkeepalive_timeâ wurde hinzugefĂŒgt, die die gesamte Lebensdauer jeder Keep-Alive-Verbindung begrenzt, nach deren Ablauf die Verbindung geschlossen wird (nicht zu verwechseln mit keepalive_timeout, das die Zeit der InaktivitĂ€t definiert, nach der die Keep-Alive-Verbindung geschlossen wird).
- Die Variable $connection_time wurde hinzugefĂŒgt, ĂŒber die Informationen zur Dauer der Verbindung in Sekunden mit MillisekundenprĂ€zision abgerufen werden können.
- Die Direktiven âproxy_cache_pathâ, âfastcgi_cache_pathâ, âscgi_cache_pathâ und âuwsgi_cache_pathâ wurden um den Parameter âmin_freeâ ergĂ€nzt, der die Cache-GröĂe auf Basis der FestplattenplatzverfĂŒgbarkeit reguliert.
- Die Direktiven âlingering_closeâ, âlingering_timeâ und âlingering_timeoutâ wurden fĂŒr die Verwendung mit HTTP/2 angepasst.
- Der Code zur Verarbeitung von Verbindungen in HTTP/2 Ă€hnelt der Implementierung von HTTP/1.x. Die UnterstĂŒtzung fĂŒr die einzelnen Einstellungen âhttp2_recv_timeoutâ, âhttp2_idle_timeoutâ und âhttp2_max_requestsâ wurde zugunsten der allgemeinen Direktiven âkeepalive_timeoutâ und âkeepalive_requestsâ eingestellt. Die Einstellungen âhttp2_max_field_sizeâ und âhttp2_max_header_sizeâ wurden entfernt, stattdessen sollten âlarge_client_header_buffersâ verwendet werden.
- Eine neue Kommandozeilenoption â-eâ wurde hinzugefĂŒgt, mit der eine alternative Datei fĂŒr die Fehlerprotokollierung angegeben werden kann, die anstelle des in den Einstellungen festgelegten Logs verwendet wird. Anstelle des Dateinamens kann ein spezieller Wert wie stderr angegeben werden.
Quelle: opennet.ru
