Wydanie nginx 1.22.0

Po 13 miesiącach prac rozwojowych zaprezentowano nową stabilną wersję wysokowydajnego serwera HTTP i wieloprotokołowego serwera proxy nginx 1.22.0, która zawiera zmiany zgromadzone w głównej wersji 1.21.x. W przyszłości wszystkie zmiany w stabilnej wersji 1.22 będą dotyczyć usuwania poważnych błędów i luk w zabezpieczeniach. Wkrótce utworzona zostanie główna wersja nginx 1.23, w której kontynuowane będą prace nad nowymi funkcjami. Użytkownikom, którzy nie mają potrzeby zapewnienia zgodności z zewnętrznymi modułami, zaleca się korzystanie z głównej wersji, na podstawie której co trzy miesiące wydawane są wersje komercyjnego produktu Nginx Plus.

Zgodnie z kwietniowym raportem firmy Netcraft, nginx jest używany na 20,08% wszystkich aktywnych stron internetowych (rok temu 20,15%, dwa lata temu 19,56%), co odpowiada drugiemu miejscu pod względem popularności w tej kategorii (udział Apache wynosi 22,58% (rok temu 25,38%), Cloudflare — 10,42% (8,51%), Google — 8,89% (10,09%). Przy tym, rozważając wszystkie strony, nginx zachowuje wiodącą pozycję, zajmując 31,13% rynku (rok temu 35,34%, dwa lata temu — 36,91%), podczas gdy udział Apache wynosi 23,08% (25,98%), OpenResty (platforma oparta na nginx i LuaJIT) — 8,01% (6,55%), Cloudflare — 5,49%, Microsoft IIS — 4% (5,96%).

Wśród miliona najczęściej odwiedzanych stron na świecie udział nginx wynosi 21,79% (rok temu 23,06%, dwa lata temu 25,54%). Obecnie około 361 mln stron działa pod kontrolą nginx (rok temu 419 mln). Według danych W3Techs nginx jest używany na 33,5% stron wśród miliona najczęściej odwiedzanych, w maju ubiegłego roku wskaźnik ten wynosił 33,8%, a w roku poprzednim — 31,9%. Udział Apache spadł z 33,8% do 31,5%, a udział Microsoft IIS z 7% do 6%. Udział LiteSpeed wzrósł z 8,5% do 12,1%, a Node.js z 1,2% do 1,9%. W Rosji nginx jest używany na 79,8% najczęściej odwiedzanych stron (rok temu — 79,1%).

Najbardziej zauważalne ulepszenia, wprowadzone w trakcie tworzenia głównej wersji 1.21.x:

  • W dyrektywach „proxy_ssl_certificate”, „proxy_ssl_certificate_key”, „grpc_ssl_certificate”, „grpc_ssl_certificate_key”, „uwsgi_ssl_certificate” i „uwsgi_ssl_certificate_key” dodano wsparcie dla zmiennych.
  • Do modułu proxy do poczty dodano wsparcie dla trybu „pipelining” do przesyłania wielu zapytań POP3 lub IMAP w jednym połączeniu, a także dodano nową dyrektywę „max_errors”, określającą maksymalną liczbę błędów protokołu, po której połączenie zostanie zamknięte.
  • Zrealizowano przesyłanie nagłówków „Auth-SSL-Protocol” i „Auth-SSL-Cipher” serwera autoryzacji proxy do poczty.
  • Moduł stream dodał wsparcie dla rozszerzenia TLS ALPN. Aby określić listę obsługiwanych protokołów ALPN (h2, http/1.1), wprowadzono dyrektywę ssl_alpn, a dla uzyskania informacji o uzgodnionym protokole ALPN z klientem, dodano zmienną $ssl_alpn_protocol.
  • Do modułu stream dodano parametr „fastopen”, włączający tryb „TCP Fast Open” dla nasłuchujących gniazd.
  • Wprowadzono eskalację znaków „»”, „«”, „\”, „^”, „`”, „{“, „|” oraz „}” przy proxy z modyfikacją URI.
  • Moduł stream dodał dyrektywę proxy_half_close, dzięki której można skonfigurować zachowanie przy zamykaniu proxy TCP z jednej strony („TCP half-close”).
  • Do modułu ngx_http_mp4_module dodano nową dyrektywę mp4_start_key_frame do transmisji strumienia wideo, zaczynając od kluczowej klatki.
  • Dodano zmienną $ssl_curve, która zwraca typ krzywej eliptycznej wybranej do uzgodnienia kluczy w sesji TLS.
  • W dyrektywie „sendfile_max_chunk” domyślna wartość została zmieniona na 2 megabajty;
  • Zapewniono zgodność z biblioteką OpenSSL 3.0. Dodano wsparcie dla wywołania SSL_sendfile() przy użyciu OpenSSL 3.0.
  • Domyślnie włączono kompilację z biblioteką PCRE2, która oferuje funkcje do przetwarzania wyrażeń regularnych.
  • Podczas ładowania certyfikatów serwera ustalono wykorzystanie poziomów bezpieczeństwa, wspieranych od OpenSSL 1.1.0, które można określić za pomocą parametru „@SECLEVEL=N” w dyrektywie ssl_ciphers.
  • Zaprzestano wspierania eksportowego zestawu szyfrów.
  • W API filtrowania zawartości żądań dozwolono buforowanie przetwarzanych danych.
  • Na platformie FreeBSD poprawiono wsparcie dla systemowego wywołania sendfile, które ma na celu organizację bezpośredniego przesyłania danych między deskryptorem pliku a gniazdem. Zawsze używany jest tryb sendfile(SF_NODISKIO) oraz dodano wsparcie dla trybu sendfile(SF_NOCACHE).
  • Zrezygnowano z obsługi nawiązywania połączeń HTTP/2 przy użyciu rozszerzenia NPN (Next Protocol Negotiation) zamiast ALPN.
  • Zrealizowano blokadę żądań HTTP/1.0, które zawierają nagłówek HTTP „Transfer-Encoding” (wprowadzony w wersji protokołu HTTP/1.1).
  • Wzmocniono ochronę przed atakami klasy „HTTP Request Smuggling” na systemy front-end do back-end, umożliwiając wnikanie w treść zapytań innych użytkowników, przetwarzanych w tym samym strumieniu między front-endem a back-endem. Nginx zawsze zwraca błąd przy użyciu metody CONNECT; przy równoczesnym podaniu nagłówków „Content-Length” i „Transfer-Encoding”; przy obecności spacji lub znaków kontrolnych w ciągu zapytania, nazwie nagłówka HTTP lub wartości nagłówka „Host”.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster