Wydano nginx 1.19.7, njs 0.5.1 oraz NGINX Unit 1.22.0

Wydanie głównej gałęzi nginx 1.19.7 zostało zformowane, w ramach którego kontynuowane są prace nad nowymi funkcjami (w równolegle wspieranej stabilnej gałęzi 1.18 wprowadzane są jedynie zmiany związane z usuwaniem poważnych błędów i luk w zabezpieczeniach).

Główne zmiany:

  • Po wyczerpaniu dostępnych połączeń przez proces roboczy, nginx teraz zamyka nie tylko połączenia keepalive, ale także połączenia w stanie oczekiwania na zamknięcie gniazda („lingering close”).
  • Kod obsługi połączeń w HTTP/2 został zbliżony do realizacji HTTP/1.x. Wsparcie dla poszczególnych ustawień „http2_recv_timeout”, „http2_idle_timeout” i „http2_max_requests” zostało zakończone na rzecz ogólnych dyrektyw „keepalive_timeout” i „keepalive_requests”.
  • Usunięto ustawienia „http2_max_field_size” oraz „http2_max_header_size”, a zamiast nich należy używać „large_client_header_buffers”.

Jednocześnie wydano njs 0.5.1, interpreter języka JavaScript dla serwer WWW Interpreter njs realizuje standardy ECMAScript i pozwala na rozszerzenie możliwości nginx w przetwarzaniu żądań za pomocą skryptów w konfiguracji. Skrypty mogą być używane w pliku konfiguracyjnym do definiowania zaawansowanej logiki przetwarzania żądań, formowania konfiguracji, dynamicznego generowania odpowiedzi, modyfikacji żądania/odpowiedzi lub szybkiego tworzenia atrap w celu rozwiązania problemów w aplikacjach webowych.

W nowej wersji dodano dyrektywę „js_header_filter”, która umożliwia ustawienie funkcji JavaScript do filtrowania i modyfikowania dowolnych nagłówków odpowiedzi: js_import foo.js; location / { js_header_filter foo.filter; proxy_pass http://127.0.0.1:8081/; } foo.js: function filter(r) { var cookies = r.headersOut[‘Set-Cookie’]; var len = r.args.len ? Number(r.args.len) : 0; r.headersOut[‘Set-Cookie’] = cookies.filter(v=>v.length > len); } export default {filter};

Dodano także metodę ngx.fetch(), implementującą API Fetch, która zapewnia funkcjonalność klienta HTTP. Metoda wspiera przetwarzanie opcji body, headers, buffer_size oraz max_response_body_size. W zwracanym obiekcie Response wspierane są metody arrayBuffer(), bodyUsed, json(), headers, ok, redirect, status, statusText, text(), type oraz url, a w obiekcie Header metody get(), getAll() oraz has(). function fetch(r) { ngx.fetch(‘http://nginx.org/’) .then(reply => reply.text()) .then(body => r.return(200, body)) .catch(e => r.return(501, e.message)); }

Można także zauważyć publikację serwery aplikacji NGINX Unit 1.22, 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 zarządem NGINX Unit może jednocześnie działać wiele aplikacji w różnych językach programowania, a parametry uruchomienia można zmieniać dynamicznie bez konieczności edytowania plików konfiguracyjnych i ponownego uruchamiania. Kod jest napisany w języku C i rozpowszechniany na licencji Apache 2.0.

W najnowszym wydaniu NGINX Unit skoncentrowano się na zwiększeniu stabilności, rozszerzeniu narzędzi do testowania oraz usunięciu błędów. W pakietach tworzonych dla systemu Linux zmieniono użytkownika i grupę, pod którymi uruchamiany jest NGINX Unit. Zamiast nobody:nobody procesy są teraz uruchamiane pod oddzielnym użytkownikiem unit w grupie unit. Zapewniono zgodność z API Stream obiektów ServerRequest i ServerResponse z modułu Node.js. W opcji „path” dla aplikacji Python zezwolono na wskazywanie wielu katalogów.

Źródło: opennet.ru

Kup niezawodny hosting stron z ochroną DDoS, serwery VPS VDS 🔥 Kup niezawodny hosting stron z ochroną DDoS, serwery VPS VDS - ProHoster