Nginx 1.19.7, njs 0.5.1 ja NGINX Unit 1.22.0 julkaisu

Nginx 1.19.7:n päähaara on julkaistu, jonka sisällä uusien ominaisuuksien kehittäminen jatkuu (rinnakkaistuetussa vakaassa haarassa 1.18 tehdään vain vakavien virheiden ja haavoittuvuuksien poistamiseen liittyviä muutoksia).

Suurimmat muutokset:

  • Kun työprosessin vapaat yhteydet loppuvat, nginx sulkee nyt paitsi ylläpidettävät yhteydet, myös yhteydet, jotka odottavat socketin sulkemista ("lingering close").
  • HTTP/2:n yhteydenkäsittelykoodi on lähellä HTTP/1.x-toteutusta. Yksittäisten asetusten "http2_recv_timeout", "http2_idle_timeout" ja "http2_max_requests" tuki on lopetettu yleisten ohjeiden "keepalive_timeout" ja "keepalive_requests" hyväksi.
  • Asetukset "http2_max_field_size" ja "http2_max_header_size" on poistettu, ja niiden sijaan tulisi käyttää "large_client_header_buffers".

Samaan aikaan julkaistiin njs 0.5.1, JavaScript-tulkki nginx-verkkopalvelimelle. Njs-tulkki toteuttaa ECMAScript-standardeja ja antaa sinun laajentaa nginxin kykyä käsitellä pyyntöjä konfiguraatiossa olevien komentosarjojen avulla. Komentosarjoja voidaan käyttää asetustiedostossa määrittämään edistynyt logiikka pyyntöjen käsittelyyn, kokoonpanon luomiseen, dynaamisesti vastauksen luomiseen, pyynnön/vastauksen muokkaamiseen tai tynkien luomiseen nopeasti verkkosovellusten ongelmien ratkaisemiseksi.

Uusi versio lisää "js_header_filter" -direktiivin, jonka avulla voit asettaa JavaScript-funktion mielivaltaisten vastausotsikoiden suodattamiseen ja muuttamiseen: js_import foo.js; sijainti / { 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 ? Numero(r.args.len): 0; r.headersOut['Set-Cookie'] = cookies.filter(v=>v.length > len); } vie oletusarvoinen {suodatin};

Lisäksi on lisätty menetelmä ngx.fetch(), joka toteuttaa HTTP-asiakastoimintoja tarjoavan Fetch API:n. Menetelmä tukee body-, headers-, buffer_size- ja max_response_body_size -asetusten käsittelyä. Palautettu Response-objekti tukee komentoja arrayBuffer(), bodyUsed, json(), headers, ok, redirect, status, statusText, text(), type ja url, ja Header-objekti tukee get(), getAll() ja has() menetelmiä. function fetch(r) { ngx.fetch('http://nginx.org/') .then(reply => reply.text()) .then(body => r.return(200, body)) .catch (e => r.return(501, e.viesti)); }

Voit myös huomioida NGINX Unit 1.22 -sovelluspalvelimen julkaisun, joka tarjoaa ratkaisun web-sovellusten ajamiseen eri ohjelmointikielillä (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js ja Java). NGINX-yksikkö voi ajaa samanaikaisesti useita sovelluksia eri ohjelmointikielillä, joiden käynnistysparametreja voidaan muuttaa dynaamisesti ilman tarvetta muokata asetustiedostoja ja käynnistää uudelleen. Koodi on kirjoitettu C-kielellä ja jaettu Apache 2.0 -lisenssillä.

NGINX-yksikön uusi julkaisu keskittyi vakauden parantamiseen, testaustyökalujen laajentamiseen ja virheiden korjaamiseen. Linuxille luoduissa paketeissa käyttäjä ja ryhmä, joissa NGINX-yksikkö toimii, on muuttunut. Nobody:nobody sijaan prosessit suoritetaan nyt yksittäisen käyttäjäyksikön alla yksikköryhmässä. Varmistettu Node.js-moduulin ServerRequest- ja ServerResponse-objektien Stream API:n kanssa. Python-sovellusten "polku" mahdollistaa useiden hakemistojen määrittämisen.

Lähde: opennet.ru

Lisää kommentti