Vrystelling van nginx 1.19.7, njs 0.5.1 en NGINX Unit 1.22.0

Die hooftak van nginx 1.19.7 is vrygestel, waarbinne die ontwikkeling van nuwe kenmerke voortgaan (in die parallel ondersteunde stabiele tak 1.18 word slegs veranderinge gemaak wat verband hou met die uitskakeling van ernstige foute en kwesbaarhede).

Belangrikste veranderinge:

  • Wanneer 'n werkerproses sonder vrye verbindings opraak, sluit nginx nou nie net keepalive-verbindings nie, maar ook verbindings wat wag vir die sok om toe te maak ("langlende toe").
  • Die verbindingsverwerkingskode in HTTP/2 is naby die HTTP/1.x-implementering. Ondersteuning vir die individuele instellings "http2_recv_timeout", "http2_idle_timeout" en "http2_max_requests" is gestaak ten gunste van die algemene riglyne "keepalive_timeout" en "keepalive_requests".
  • Die instellings "http2_max_field_size" en "http2_max_header_size" is verwyder en "large_client_header_buffers" moet eerder gebruik word.

Terselfdertyd is njs 0.5.1 vrygestel, 'n JavaScript-tolk vir die nginx-webbediener. Die njs-tolk implementeer ECMAScript-standaarde en laat jou toe om nginx se vermoë uit te brei om versoeke te verwerk met behulp van skrifte in die konfigurasie. Skripte kan in 'n konfigurasielêer gebruik word om gevorderde logika vir die verwerking van versoeke te definieer, 'n konfigurasie te genereer, 'n antwoord dinamies te genereer, 'n versoek/antwoord te wysig, of vinnig stompe te skep om probleme in webtoepassings op te los.

Die nuwe weergawe voeg die "js_header_filter"-riglyn by, wat jou toelaat om 'n JavaScript-funksie op te stel vir die filter en verandering van arbitrêre antwoordopskrifte: js_import foo.js; ligging / { 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 ? Getal(r.args.len) : 0; r.headersOut['Set-Cookie'] = koekies.filter(v=>v.length > len); } uitvoer verstek {filter};

Ook bygevoeg is die ngx.fetch() metode, wat die Fetch API implementeer, wat HTTP-kliëntfunksionaliteit verskaf. Die metode ondersteun verwerking van liggaam, koptekste, buffer_size en max_response_body_size opsies. Die teruggekeerde Response-objek ondersteun arrayBuffer(), bodyUsed, json(), headers, ok, redirect, status, statusText, text(), tipe- en url-metodes, en die Header-objek ondersteun get(), getAll() en has() metodes. funksie haal(r) { ngx.fetch('http://nginx.org/') .then(reply => reply.text()) .then(body => r.return(200, body)) .catch (e => r.return(501, e.boodskap)); }

U kan ook let op die publikasie van die NGINX Unit 1.22 toepassingsbediener, wat 'n oplossing bied om webtoepassings in verskeie programmeertale (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js en Java) te laat loop. NGINX Unit kan gelyktydig verskeie toepassings in verskillende programmeertale laat loop, waarvan die bekendstellingsparameters dinamies verander kan word sonder dat dit nodig is om konfigurasielêers te wysig en weer te begin. Die kode is in C geskryf en onder die Apache 2.0-lisensie versprei.

Die nuwe weergawe van NGINX Unit het gefokus op die verbetering van stabiliteit, die uitbreiding van toetsinstrumente en die regstelling van foute. In die pakkette wat vir Linux gegenereer is, is die gebruiker en groep waaronder NGINX Unit loop, verander. In plaas van niemand:niemand nie, loop prosesse nou onder die individuele gebruikereenheid in die eenheidsgroep. Verseker verenigbaarheid met die Stream API van die ServerRequest en ServerResponse voorwerpe van die Node.js module. Die "pad"-opsie vir Python-toepassings laat toe dat verskeie gidse gespesifiseer kan word.

Bron: opennet.ru

Voeg 'n opmerking