Nginx 1.19.7 peamine versioon on vÀlja antud, mille raames jÀtkub uute vÔimaluste arendamine (kui paralleelselt toetatud stabiilses versioonis 1.18 viiakse sisse ainult tÔsiste vigade ja haavatavuste kÔrvaldamisega seotud muudatused).
Peamised muudatused:
- Kui tööprotsessil otsa saavad vabad ĂŒhendused, sulgeb nginx nĂŒĂŒd mitte ainult keepalive-ĂŒhendused, vaid ka ĂŒhendused, mis ootavad sokli sulgemist ("lingering close").
- HTTP/2 ĂŒhenduste töötlemise kood on viidud lĂ€hemale HTTP/1.x rakendusele. Erilised seaded "http2_recv_timeout", "http2_idle_timeout" ja "http2_max_requests" on lĂ”petatud, asendades need ĂŒldiste direktiividega "keepalive_timeout" ja "keepalive_requests".
- Seaded "http2_max_field_size" ja "http2_max_header_size" on eemaldatud, mille asemel tuleks kasutada "large_client_header_buffers".
Samuti ilmus njs 0.5.1, JavaScripti tĂ”lgendaja. veebiserver TĂ”lgendaja njs rakendab ECMAScripti standardeid ja vĂ”imaldab laiendada nginx-i vĂ”imekust pĂ€ringute töötlemisel skriptide kaudu konfiguratsioonis. Skripte saab kasutada konfiguratsioonifailis, et mÀÀrata laienev pĂ€ringute töötlemise loogika, konfiguratsiooni loomine, dĂŒnaamiline vastuse genereerimine, pĂ€ringu/vastuse modifitseerimine vĂ”i probleemide lahendamiseks kiire prototĂŒĂŒpide loomine veebirakendustes.
Uues versioonis on lisatud direktiiv "js_header_filter", mis vÔimaldab mÀÀrata JavaScripti funktsiooni vastuse pealkirjade filtreerimiseks ja muutmiseks: 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};
Samuti on lisatud meetod ngx.fetch(), mis rakendab Fetch API-d ja pakub HTTP-kliendi funktsionaalsust. Meetod toetab valikute body, headers, buffer_size ja max_response_body_size töötlemist. Tagastatud Response objektil on meetodid arrayBuffer(), bodyUsed, json(), headers, ok, redirect, status, statusText, text(), type ja url, ning Header objektil meetodid get(), getAll() ja 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)); }
Tuleb vĂ€lja tuua ka serverilt NGINX Unit 1.22 rakenduste vĂ€ljalaskmine, mis pakub lahendust veebirakenduste kĂ€itamiseks erinevates programmeerimiskeeltes (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js ja Java). NGINX Uniti all vĂ”ib samal ajal töötada mitu rakendust erinevates programmeerimiskeeltes, mille kĂ€ivitamise parameetreid saab dĂŒnaamiliselt muuta ilma konfiguratsioonifailide muutmise ja taaskĂ€ivitamiseta. Kood on kirjutatud C keeles ja jagatakse Apache 2.0 litsentsi all.
Uues vĂ€ljaandes NGINX Unit keskenduti stabiilsuse parandamisele, testimisvahendite laiendamisele ja tĂ”rgete parandamisele. Linuxile loodud pakettides on muudetud kasutajat ja gruppi, all mille alla NGINX Unit töötab. Ainult nothings:nobody asemel töötavad protsessid nĂŒĂŒd eraldi kasutajana unit grupis unit. Tagatud on ĂŒhilduvus Node.js mooduli ServerRequest ja ServerResponse objektide API-ga. Python-rakenduste 'path' valikusse on lubatud sisestada mitu kausta.
Allikas: opennet.ru
