Wydanie nginx 1.28.0 i forka FreeNginx 1.28.0.

Po roku prac wprowadzono nową stabilną wersję wydajnego serwera HTTP oraz wieloprotokołowego serwera proxy nginx 1.28.0, która zawiera zmiany skumulowane w głównej wersji 1.27.x. W przyszłości wszystkie zmiany w stabilnej wersji 1.28 będą dotyczyć naprawy poważnych błędów i luk w zabezpieczeniach. Wkrótce utworzona zostanie główna wersja nginx 1.29, w której będą kontynuowane prace nad nowymi funkcjonalnościami. Zwykłym użytkownikom, którzy nie muszą zapewniać zgodności z zewnętrznymi modułami, zaleca się korzystanie z głównej wersji, na podstawie której co trzy miesiące tworzone są wydania komercyjnego produktu Nginx Plus.

Zgodnie z marzec raportem firmy Netcraft, nginx obsługuje około 245 milionów stron internetowych (rok temu 243 miliony, dwa lata temu 289 milionów). Nginx jest używany na 17,89% wszystkich aktywnych stron internetowych (rok temu 18,15%, dwa lata temu 18,94%), co odpowiada pierwszej pozycji pod względem popularności w tej kategorii (udział Apache wynosi 16,03% (rok temu 20,09%, dwa lata temu 20,52%), Cloudflare — 17,81% (14,12%, 11,32%), Google — 9,89% (10,41%, 9,89%).

Analizując wszystkie strony, nginx pozostaje liderem i zajmuje 20,48% rynku (rok temu 22,31%, dwa lata temu — 25,94%), podczas gdy udział Apache wynosi 16,03% (20,17%, 20,58%), Cloudflare — 12,87% (11,24%, 10,17%), OpenResty (platforma oparta na nginx i LuaJIT) — 9,36% (7,93%, 7,94%).

Wśród miliona najczęściej odwiedzanych stron na świecie nginx zajmuje drugie miejsce z udziałem 20,37% (rok temu 20,63%, dwa lata temu 21,37%). Pierwsze miejsce zajmuje Cloudflare — 22,32% (rok temu 22,59%, dwa lata temu 21,62%). Udział Apache httpd wynosi 17,95% (20,09%, 21,18%).

Według danych W3Techs nginx jest używany na 33,8% stron wśród miliona najczęściej odwiedzanych (w kwietniu ubiegłego roku wskaźnik ten wynosił 34,3%, a dwa lata temu — 34,5%). Udział Apache spadł z 30,1% do 26,3%, a udział Microsoft IIS zmniejszył się z 5% do 4%. Udział Node.js wzrósł z 3,2% do 4,4%, a udział LiteSpeed z 12,9% do 14,6%.

Najbardziej zauważalne usprawnienia dodane w trakcie tworzenia głównej wersji 1.27.x:

  • Dla połączeń używających protokołu QUIC dodano wsparcie dla algorytmu zarządzania przeładowaniem sieci CUBIC (RFC 9438), którego działanie polega na stopniowym zwiększaniu rozmiaru okna przeładowania do momentu wystąpienia utraty pakietów, po czym rozmiar okna jest cofniety do wartości sprzed utraty. W przeprowadzonych testach użycie CUBIC pozwoliło skrócić czas przesyłania pliku o rozmiarze 500MB o 24% przy opóźnieniach 40ms i BDP 750K (Bandwidth Delay Product) oraz o 73% przy opóźnieniach 100ms i BDP 9M.
  • Do modułu stream dodano wsparcie dla weryfikacji unieważnienia certyfikatów klientów za pomocą protokołu OCSP (Protokół statusu certyfikatów online).
  • W module stream wprowadzono wsparcie dla techniki sprawdzania unieważnienia certyfikatów OCSP Stapling, która polega na tym, że podczas negocjacji połączenia TLS, zatwierdzona przez centrum certyfikacji odpowiedź OCSP jest przekazywana przez serwer obsługujący stronę, bez konieczności bezpośredniego kontaktu z centrum certyfikacji.
  • Przy uruchamianiu i aktualizacji konfiguracji wprowadzono buforowanie certyfikatów SSL, kluczy i CRL (Lista unieważnionych certyfikatów).
  • Dodano wsparcie w celu zmniejszenia zużycia zasobów i obciążenia CPU podczas korzystania z TLS w konfiguracjach z dużą liczbą bloków server i location. Wprowadzone zmiany umożliwiają wykorzystanie już istniejącego kontekstu SSL z bloku nadrzędnego zamiast tworzenia oddzielnego kontekstu SSL (SSL_CTX w OpenSSL) dla każdego bloku konfiguracyjnego.
  • W dyrektywie „ssl_client_certificate” zapewniono wsparcie dla certyfikatów z dodatkowymi informacjami.
  • Dla weryfikacji klientskich certyfikatów SSL dyrektywa „ssl_client_certificate” nie jest już obowiązkowa.
  • W module ngx_mail_proxy_module dodano wsparcie dla specyficznego dla SmarterMail trybu IMAP LOGIN z nietegowanym odpowiedzią CAPABILITY.
  • Do modułu ngx_http_proxy_module dodano dyrektywę „proxy_pass_trailers”, zezwalającą na przesyłanie pól nagłówków na końcu odpowiedzi z serwera proxy do klienta.
  • Do dyrektywy „server”, używanej w bloku „upstream”, dodano wsparcie dla parametru „resolve”, który umożliwia śledzenie zmian adresy IP dla używanej domeny i automatyczne aktualizowanie konfiguracji bloku „upstream” bez potrzeby restartu nginx w przypadku zmiany adresu.
  • Dodano możliwość wykorzystania zmiennych w dyrektywach „proxy_limit_rate”, „fastcgi_limit_rate”, „scgi_limit_rate” oraz „uwsgi_limit_rate”.
  • W dyrektywach „proxy_bind”, „fastcgi_bind”, „grpc_bind”, „memcached_bind”, „scgi_bind” i „uwsgi_bind”, a także w roli adresu klienta w module ngx_http_realip_module, pozwolono używać adresów IPv6 w kwadratowych nawiasach bez numeru portu.
  • Dodano dyrektywę „keepalive_min_timeout”, która określa czas oczekiwania, w którym nginx nie zamknie połączenia keep-alive z klientem.
  • Domyślnie wyłączono protokoły TLSv1 i TLSv1.1.
  • Rozwiązano problemy z długim ładowaniem plików konfiguracyjnych z powodu ponownego parsowania tego samego zestawu certyfikatów TLS, kluczy i list zaufanych centrów certyfikacji. Przyspieszono ponowne ładowanie konfiguracji poprzez ponowne wykorzystanie niezmiennych obiektów TLS, takich jak certyfikaty, klucze i CRL. Aby wyłączyć dziedziczenie obiektów podczas aktualizacji konfiguracji, dodano dyrektywę „ssl_object_cache_inheritable”.
  • Dodano pamięć podręczną dla certyfikatów i kluczy ładowanych za pomocą zmiennych w dyrektywach (np. „ssl_certificate /etc/ssl/$ssl_server_name.crt”). Dodano dyrektywy „ssl_certificate_cache”, „proxy_ssl_certificate_cache”, „grpc_ssl_certificate_cache” oraz „uwsgi_ssl_certificate_cache” do zarządzania pamięcią podręczną. Poprzez te dyrektywy można skonfigurować maksymalny rozmiar pamięci podręcznej, czas ważności zapisów oraz czas czyszczenia nieużywanych zapisów. Na przykład: „ssl_certificate_cache max=1000 inactive=20s valid=1m;”.
  • Zmniejszono zużycie pamięci podczas przetwarzania długotrwałych zapytań w konfiguracjach, w których używane są dyrektywy „gzip”, „gunzip”, „ssi”, „sub_filter” lub „grpc_pass”.
  • Maksymalny rozmiar buforowanych w pamięci współdzielonej sesji SSL zwiększono do 8192.
  • Uproszczono budowanie z biblioteką C Musl.
  • Przeprowadzono prace nad optymalizacją wydajności i eliminacją błędów w implementacji HTTP/3.

Dodatkowo warto wspomnieć o wydaniu wersji projektu FreeNginx 1.28.0, rozwijającego fork Nginx. Rozwój forka prowadzi Maksim Dunin, jeden z kluczowych deweloperów Nginx. FreeNginx jest pozycjonowany jako projekt non-profit, zapewniający rozwój bazy kodu Nginx bez korporacyjnej ingerencji. Wśród specyficznych zmian w gałęzi FreeNginx 1.28:

  • Parametr „off” w dyrektywie „pid”, dezaktywujący tworzenie pliku PID.
  • Ograniczenie intensywności zapisu komunikatów w dzienniku błędów w celu ochrony przed jego zapełnieniem typowymi komunikatami.
  • Implementacja parametru multipath w dyrektywie listen w celu wsparcia Multipath TCP.
  • Wsparcie nagłówka HTTP „Age” do określenia czasu życia wpisów w pamięci podręcznej.
  • Dodanie metod uwierzytelniania XOAUTH2 i OAUTHBEARER do modułu mail_proxy.

Ź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