Vydanie nginx 1.19.7, njs 0.5.1 a NGINX Unit 1.22.0

Bola uvoľnená hlavná vetva nginx 1.19.7, v rámci ktorej pokračuje vývoj nových funkcií (v paralelne podporovanej stabilnej vetve 1.18 sa robia len zmeny súvisiace s odstránením závažných chýb a zraniteľností).

Hlavné zmeny:

  • Keď sa pracovnému procesu vyčerpajú voľné pripojenia, nginx teraz zatvorí nielen udržiavacie pripojenia, ale aj pripojenia čakajúce na zatvorenie soketu („pretrvávajúce zatvorenie“).
  • Kód spracovania pripojenia v HTTP/2 je blízky implementácii HTTP/1.x. Podpora individuálnych nastavení „http2_recv_timeout“, „http2_idle_timeout“ a „http2_max_requests“ bola ukončená v prospech všeobecných smerníc „keepalive_timeout“ a „keepalive_requests“.
  • Nastavenia „http2_max_field_size“ a „http2_max_header_size“ boli odstránené a namiesto nich by sa mali použiť „large_client_header_buffers“.

Zároveň bol vydaný njs 0.5.1, interpret JavaScriptu pre webový server nginx. Interpret njs implementuje štandardy ECMAScript a umožňuje vám rozšíriť schopnosť nginx spracovávať požiadavky pomocou skriptov v konfigurácii. Skripty možno použiť v konfiguračnom súbore na definovanie pokročilej logiky na spracovanie požiadaviek, generovanie konfigurácie, dynamické generovanie odpovede, úpravu požiadavky/odpovede alebo rýchle vytváranie stubov na riešenie problémov vo webových aplikáciách.

Nová verzia pridáva direktívu “js_header_filter”, ktorá umožňuje nastaviť funkciu JavaScriptu na filtrovanie a zmenu ľubovoľných hlavičiek odpovedí: js_import foo.js; umiestnenie / { 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); } exportovať predvolený {filter};

Pridaná je aj metóda ngx.fetch(), ktorá implementuje rozhranie Fetch API, ktoré poskytuje funkčnosť klienta HTTP. Metóda podporuje spracovanie volieb body, headers, buffer_size a max_response_body_size. Vrátený objekt Response podporuje arrayBuffer(), bodyUsed, json(), hlavičky, ok, redirect, status, statusText, text(), metódy typu a url a objekt Header podporuje get(), getAll() a has() metódy . function fetch(r) { ngx.fetch('http://nginx.org/') .then(reply => reply.text()) .then(body => r.return(200, body)) .catch (e => r.return(501, e.sprava)); }

Všimnúť si môžete aj publikáciu aplikačného servera NGINX Unit 1.22, ktorý ponúka riešenie pre spustenie webových aplikácií v rôznych programovacích jazykoch (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js a Java). NGINX Unit dokáže súčasne spúšťať viacero aplikácií v rôznych programovacích jazykoch, ktorých spúšťacie parametre je možné dynamicky meniť bez nutnosti úpravy konfiguračných súborov a reštartu. Kód je napísaný v jazyku C a distribuovaný pod licenciou Apache 2.0.

Nové vydanie jednotky NGINX sa zameralo na zlepšenie stability, rozšírenie testovacích nástrojov a opravu chýb. V balíkoch vygenerovaných pre Linux boli zmenení používateľ a skupina, pod ktorou beží jednotka NGINX. Namiesto nikto:nikto procesy teraz bežia pod individuálnou používateľskou jednotkou v skupine jednotiek. Zaistená kompatibilita s rozhraním Stream API objektov ServerRequest a ServerResponse z modulu Node.js. Možnosť „cesta“ pre aplikácie Python umožňuje zadať viacero adresárov.

Zdroj: opennet.ru

Pridať komentár