Została wydana główna gałąź nginx 1.19.7, w ramach której kontynuowany jest rozwój nowych funkcjonalności (w równolegle obsługiwanej stabilnej gałęzi 1.18 wprowadzane są jedynie zmiany związane z eliminacją poważnych błędów i podatności).
Główne zmiany:
- Kiedy procesowi roboczemu skończą się wolne połączenia, nginx zamyka teraz nie tylko połączenia keepalive, ale także połączenia w stanie zamknięcia.
- Kod obsługi połączeń HTTP/2 został bliższy implementacji HTTP/1.x. Obsługa indywidualnych ustawień „http2_recv_timeout”, „http2_idle_timeout” i „http2_max_requests” została wycofana na rzecz ogólnych dyrektyw „keepalive_timeout” i „keepalive_requests”.
- Ustawienia „http2_max_field_size” i „http2_max_header_size” zostały usunięte. Zamiast nich należy używać ustawień „large_client_header_buffers”.
W tym samym czasie njs 0.5.1, interpreter JavaScript dla serwer internetowy nginx. Interpreter njs implementuje standardy ECMAScript i umożliwia rozszerzenie możliwości przetwarzania żądań nginx za pomocą skryptów konfiguracyjnych. Skrypty mogą być używane w pliku konfiguracyjnym do definiowania zaawansowanej logiki przetwarzania żądań, generowania konfiguracji, dynamicznego generowania odpowiedzi, modyfikowania żądań/odpowiedzi lub szybkiego tworzenia szablonów w celu rozwiązywania problemów w aplikacjach internetowych.
Nowa wersja dodaje dyrektywę „js_header_filter”, która umożliwia określenie 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 również metodę ngx.fetch(), implementującą API Fetch, które zapewnia funkcjonalność klienta HTTP. Metoda obsługuje opcje body, headers, buffer_size i max_response_body_size. Zwrócony obiekt Response obsługuje metody arrayBuffer(), bodyUsed, json(), headers, ok, redirect, status, statusText, text(), type i url, a obiekt Header obsługuje metody get(), getAll() i 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żesz również oznaczyć publikację serwer NGINX Unit 1.22 to rozwiązanie do uruchamiania aplikacji internetowych napisanych w różnych językach programowania (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js i Java). NGINX Unit umożliwia jednoczesne uruchamianie wielu aplikacji napisanych w różnych językach, a ich parametry uruchamiania można dynamicznie zmieniać bez konieczności edycji plików konfiguracyjnych lub restartu. Kod napisany jest w języku C i jest objęty licencją Apache 2.0.
В новом выпуске NGINX Unit основное внимание было уделено повышению стабильности, расширению средств для тестирования и исправлению ошибок. В формируемых для Linux пакетах изменены пользователь и группа, под которыми запускается NGINX Unit. Вместо nobody:nobody процессы теперь выполняются под отдельным пользователем unit в группе unit. Обеспечена совместимость с API Stream объектов ServerRequest и ServerResponse из модуля Node.js. В опции «path» для Python-приложений разрешено указание нескольких каталогов.
Źródło: opennet.ru
