Wydanie nginx 1.25.3, njs 0.8.2 i NGINX Unit 1.31.1

Uformowano wydanie głównej gałęzi nginx 1.25.3, w ramach którego kontynuowany jest rozwój nowych możliwości. W równolegle wspieranej stabilnej gałęzi 1.24.x wprowadzane są jedynie zmiany związane z eliminacją poważnych błędów i luk w zabezpieczeniach. W przyszłości na bazie głównej gałęzi 1.25.x zostanie utworzona stabilna gałąź 1.26. Kod projektu został napisany w języku C i rozpowszechniany jest na licencji BSD.

Wśród zmian:

  • Wzmocniono ochronę przed anomaliami aktywności klientów HTTP/2, a w szczególności przed atakami DoS klasy „Rapid Reset”, w których tworzona jest duża liczba natychmiast resetowanych strumieni w ramach jednego połączenia HTTP/2. W konfiguracji domyślnej takie ataki napotykają na limit liczby żądań na połączenie „keepalive_requests” (po każdym 1000 żądaniu połączenie zostanie zresetowane) oraz na ograniczenia „limit_req”. W celu wcześniejszego reagowania na zalew żądań poprzez dużą liczbę strumieni dodano dodatkowe ograniczenie, które z zasady nie pozwala na utworzenie więcej niż 256 (2 * max_concurrent_streams) nowych strumieni na cykl przetwarzania zdarzeń. Nowe ograniczenie umożliwia rozpoczęcie blokowania żądań przed osiągnięciem ogólnego limitu na liczbę równoczesnych strumieni, na przykład gdy strumienie są przetwarzane asynchronicznie lub resetowane. Podobna zmiana została również wprowadzona w wydaniu angie 1.3.1 (fork nginx), opublikowanym tydzień temu.
  • Udoskonalone zarządzanie buforami wykorzystywanymi przy automatycznym określaniu połączeń HTTP/2.
  • Zwiększona wydajność uruchamiania konfiguracji z dużą liczbą dyrektyw „location”.
  • Usunięto awaryjne zakończenie procesu roboczego zaobserwowane podczas próby użycia HTTP/2 bez SSL.
  • Poprawiono nieprawidłowe przetwarzanie zwracanego przez backend nagłówka „Status” z pustym tekstem wyjaśniającym.
  • Usunięto wyciek pamięci podczas rekonfiguracji, występujący podczas kompilacji z biblioteką PCRE2.
  • Wprowadzono dużą dawkę poprawek i ulepszeń związanych z obsługą protokołu HTTP/3.

Jednocześnie odbyło się wydanie njs 0.8.2, interpretera języka JavaScript dla serwer WWW nginx. Interpreter njs implementuje standardy ECMAScript i pozwala na rozszerzenie możliwości nginx w zakresie przetwarzania żądań za pomocą skryptów w konfiguracji. Skrypty mogą być używane w pliku konfiguracyjnym do określenia zaawansowanej logiki przetwarzania żądań, formułowania konfiguracji, dynamicznego generowania odpowiedzi, modyfikacji żądania/odpowiedzi lub szybkiego tworzenia zastawek w rozwiązaniu problemów w aplikacjach webowych. W nowej wersji dodano obiekt console, który zapewnia metody error(), info(), log(), time(), timeEnd() oraz warn(). Do modułu fs dodano metodę fs.existsSync().

Można również zauważyć wydanie serwera aplikacji NGINX Unit 1.31.1, oferującego rozwiązanie do uruchamiania aplikacji webowych w różnych językach programowania (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js oraz Java). Pod kontrolą NGINX Unit może jednocześnie działać wiele aplikacji w różnych językach programowania, których parametry uruchamiania mogą być zmieniane dynamicznie, bez konieczności edytowania plików konfiguracyjnych i ponownego uruchamiania. Oprócz poprawki błędów w nowej wersji w module Wasm umożliwiono ładowanie danych większych niż 4 GB, a podczas odpowiedzi dodano możliwość ustawiania kodów stanu HTTP.

Ź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