Nginx 1.19.7, njs 0.5.1 ja NGINX Unit 1.22.0 väljalase

Välja on antud nginx 1.19.7 põhiharu, mille raames jätkub uute funktsioonide arendamine (paralleelselt toetatud stabiilses harus 1.18 tehakse vaid tõsiste vigade ja haavatavuste likvideerimisega seotud muudatusi).

Peamised muudatused:

  • Kui tööprotsessis saavad vabad ühendused otsa, sulgeb nginx nüüd mitte ainult elusolevad ühendused, vaid ka ühendused, mis ootavad pistikupesa sulgemist ("lingering close").
  • Ühenduse töötlemise kood HTTP/2-s on lähedane HTTP/1.x-le. Üksikute seadistuste "http2_recv_timeout", "http2_idle_timeout" ja "http2_max_requests" tugi on lõpetatud üldjuhiste "keepalive_timeout" ja "keepalive_requests" kasuks.
  • Sätted "http2_max_field_size" ja "http2_max_header_size" on eemaldatud ja nende asemel tuleks kasutada "large_client_header_buffers".

Samal ajal anti välja njs 0.5.1, JavaScripti tõlk nginxi veebiserveri jaoks. Njs-tõlk rakendab ECMAScripti standardeid ja võimaldab teil laiendada nginxi võimet töödelda taotlusi konfiguratsioonis olevate skriptide abil. Skripte saab konfiguratsioonifailis kasutada täpsema loogika määratlemiseks päringute töötlemiseks, konfiguratsiooni genereerimiseks, vastuse dünaamiliseks genereerimiseks, päringu/vastuse muutmiseks või kiireks tünnide loomiseks veebirakenduste probleemide lahendamiseks.

Uus versioon lisab direktiivi “js_header_filter”, mis võimaldab määrata JavaScripti funktsiooni suvaliste vastusepäiste filtreerimiseks ja muutmiseks: js_import foo.js; asukoht / { 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 ? Arv(r.args.len): 0; r.headersOut['Set-Cookie'] = cookies.filter(v=>v.length > len); } ekspordi vaikimisi {filter};

Samuti on lisatud meetod ngx.fetch(), mis rakendab HTTP-kliendi funktsionaalsust pakkuvat Fetch API-t. Meetod toetab keha, päiste, buffer_size ja max_response_body_size valikute töötlemist. Tagastatud vastuse objekt toetab arrayBuffer(), bodyUsed, json(), päiseid, ok, ümbersuunamist, olekut, staatusteksti, text(), tüübi ja url meetodeid ning päiseobjekt toetab get(), getAll() ja has() meetodid. 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)); }

Samuti võite märkida rakendusserveri NGINX Unit 1.22 avaldamist, mis pakub lahendust veebirakenduste käivitamiseks erinevates programmeerimiskeeltes (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js ja Java). NGINX Unit suudab samaaegselt käivitada mitut rakendust erinevates programmeerimiskeeltes, mille käivitusparameetreid saab dünaamiliselt muuta, ilma et oleks vaja konfiguratsioonifaile redigeerida ja taaskäivitada. Kood on kirjutatud C-keeles ja levitatakse Apache 2.0 litsentsi all.

NGINX-i üksuse uus väljalase keskendus stabiilsuse parandamisele, testimistööriistade laiendamisele ja vigade parandamisele. Linuxi jaoks loodud pakettides on muudetud kasutajat ja rühma, mille all NGINX Unit töötab. Nobody:nobody asemel töötavad protsessid nüüd rühmaüksuse individuaalse kasutajaüksuse all. Tagatud ühilduvus Node.js mooduli ServerRequest ja ServerResponse objektide Stream API-ga. Pythoni rakenduste valik "tee" võimaldab määrata mitu kataloogi.

Allikas: opennet.ru

Lisa kommentaar