Vydání nginx 1.19.7, njs 0.5.1 a NGINX Unit 1.22.0

Byla vydána hlavní větev nginx 1.19.7, v rámci které pokračuje vývoj nových funkcí (v paralelně podporované stabilní větvi 1.18 jsou prováděny pouze změny související s odstraňováním závažných chyb a zranitelností).

Hlavní změny:

  • Když pracovnímu procesu dojdou volná připojení, nginx nyní uzavře nejen udržovací připojení, ale také připojení čekající na uzavření soketu („prodlévající uzavření“).
  • Kód zpracování připojení v HTTP/2 je blízký implementaci HTTP/1.x. Podpora jednotlivých nastavení „http2_recv_timeout“, „http2_idle_timeout“ a „http2_max_requests“ byla ukončena ve prospěch obecných direktiv „keepalive_timeout“ a „keepalive_requests“.
  • Nastavení "http2_max_field_size" a "http2_max_header_size" byla odstraněna a místo toho by měl být použit "large_client_header_buffers".

Ve stejné době byl vydán njs 0.5.1, interpret JavaScriptu pro webový server nginx. Interpret njs implementuje standardy ECMAScript a umožňuje vám rozšířit schopnost nginx zpracovávat požadavky pomocí skriptů v konfiguraci. Skripty lze použít v konfiguračním souboru k definování pokročilé logiky pro zpracování požadavků, generování konfigurace, dynamické generování odpovědi, úpravy požadavku/odpovědi nebo rychlé vytváření útržků pro řešení problémů ve webových aplikacích.

Nová verze přidává direktivu „js_header_filter“, která umožňuje nastavit funkci JavaScriptu pro filtrování a změnu libovolných hlaviček odpovědí: js_import foo.js; umístění / { 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 ? Číslo(r.args.len) : 0; r.headersOut['Set-Cookie'] = cookies.filter(v=>v.length > len); } export default {filtr};

Přidána je také metoda ngx.fetch(), která implementuje rozhraní Fetch API, které poskytuje funkčnost klienta HTTP. Metoda podporuje zpracování voleb body, headers, buffer_size a max_response_body_size. Vrácený objekt Response podporuje arrayBuffer(), bodyUsed, json(), headers, ok, redirect, status, statusText, text(), metody typu a url a objekt Header podporuje get(), getAll() a has() metody . function fetch(r) { ngx.fetch('http://nginx.org/') .then(reply => reply.text()) .then(body => r.return(200, body)) .catch (e => r.return(501, e.zprava)); }

Můžete si také všimnout publikace aplikačního serveru NGINX Unit 1.22, který nabízí řešení pro provozování webových aplikací v různých programovacích jazycích (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js a Java). NGINX Unit může současně spouštět více aplikací v různých programovacích jazycích, jejichž spouštěcí parametry lze dynamicky měnit bez nutnosti úpravy konfiguračních souborů a restartu. Kód je napsán v jazyce C a distribuován pod licencí Apache 2.0.

Nová verze NGINX Unit se zaměřila na zlepšení stability, rozšíření testovacích nástrojů a opravy chyb. V balíčcích generovaných pro Linux došlo ke změně uživatele a skupiny, pod kterými jednotka NGINX běží. Namísto nikdo:nikdo procesy nyní běží pod individuální uživatelskou jednotkou v jednotce skupiny. Zajištěná kompatibilita s rozhraním Stream API objektů ServerRequest a ServerResponse z modulu Node.js. Možnost "cesta" pro aplikace Python umožňuje zadat více adresářů.

Zdroj: opennet.ru

Přidat komentář