Verzia nginx 1.19.7, njs 0.5.1 a NGINX Unit 1.22.0

Bola vydaná verzia hlavnej vetvy nginx 1.19.7, v rámci ktorej pokračuje rozvoj nových možností (v paralelne podporovanej stabilnej vetve 1.18 sa implementujú len zmeny súvisiace s opravou závažných chýb a zraniteľností).

Hlavné zmeny:

  • Keď sa vyčerpajú voľné pripojenia, nginx teraz uzatvára nielen keepalive pripojenia, ale aj pripojenia v stave čakania na uzatvorenie soketu („lingering close“).
  • Kód správy pripojení v HTTP/2 bol priblížený k implementácii HTTP/1.x. Podpora jednotlivých nastavení „http2_recv_timeout“, „http2_idle_timeout“ a „http2_max_requests“ bola zrušená v prospech spoločných direktív „keepalive_timeout“ a „keepalive_requests.“
  • Boli odstránené nastavenia „http2_max_field_size“ a „http2_max_header_size“, namiesto ktorých by ste mali použiť „large_client_header_buffers.“

Súčasne bola vydaná verzia njs 0.5.1, interpretera jazyka JavaScript pre webového servera nginx. Interpreter njs implementuje štandardy ECMAScript a umožňuje rozšíriť možnosti nginx pri spracovaní požiadaviek pomocou skriptov v konfigurácii. Skripty sa môžu používať v konfiguračnom súbore na určenie rozšírenej logiky spracovania požiadaviek, formovanie konfigurácie, dynamickú generáciu odpovede, modifikáciu požiadavky/odpovede alebo rýchle vytváranie záložiek na riešenie problémov vo webových aplikáciách.

V novej verzii bola pridaná direktíva „js_header_filter“, ktorá umožňuje nastaviť JavaScript funkciu na filtrovanie a zmenu ľubovoľných hlavičiek odpovede: 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};

Rovnakým spôsobom bol pridaný aj metóda ngx.fetch(), ktorá implementuje API Fetch, poskytujúcu funkčnosť HTTP klienta. Metóda podporuje spracovanie volieb body, headers, buffer_size a max_response_body_size. Vo vrátenom objekte Response sa podporujú metódy arrayBuffer(), bodyUsed, json(), headers, ok, redirect, status, statusText, text(), type a url, a v objekte Header metódy get(), getAll() a 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)); }

Rovnako je možné spomenúť vydanie servera Aplikácia NGINX Unit 1.22, ktorá ponúka riešenie pre spúšťanie webových aplikácií v rôznych programovacích jazykoch (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js a Java). Pod riadením NGINX Unit môže súčasne bežať niekoľko aplikácií v rôznych programovacích jazykoch, pričom parametre spustenia je možné dynamicky meniť bez nutnosti upravovať konfiguračné súbory a reštartovať. Kód je napísaný v jazyku C a šíri sa pod licenciou Apache 2.0.

V novej verzii NGINX Unit sa kládol dôraz na zlepšenie stability, rozšírenie nástrojov na testovanie a opravu chýb. V balíkoch pre Linux boli zmenené používateľ a skupina, pod ktorými NGINX Unit beží. Namiesto nobody:nobody procesy teraz bežia pod samostatným používateľom unit v skupine unit. Zabezpečená je kompatibilita s API Stream objektov ServerRequest a ServerResponse z modulu Node.js. V možnosti „path“ pre Python aplikácie je povolené uvádzať viacero adresárov.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster