Nginx 1.19.7, njs 0.5.1 eta NGINX Unitatea 1.22.0 kaleratzea

Nginx 1.19.7-ren adar nagusia kaleratu da, eta horren barruan funtzio berrien garapenak jarraitzen du (paraleloan onartzen den 1.18 adar egonkorrean, akats larriak eta ahuleziak ezabatzearekin lotutako aldaketak bakarrik egiten dira).

Aldaketa nagusiak:

  • Langile-prozesu bat doako konexiorik gabe gelditzen denean, nginx-ek orain keepalive konexioak ez ezik, socketa ixteko zain dauden konexioak ere ixten ditu ("itxiera irautea").
  • HTTP/2-n konexioa prozesatzeko kodea HTTP/1.x inplementaziotik hurbil dago. "http2_recv_timeout", "http2_idle_timeout" eta "http2_max_requests" ezarpen indibidualetarako laguntza eten egin da "keepalive_timeout" eta "keepalive_requests" zuzentarau orokorren alde.
  • "http2_max_field_size" eta "http2_max_header_size" ezarpenak kendu dira eta horren ordez "large_client_header_buffers" erabili behar da.

Aldi berean, njs 0.5.1 kaleratu zen, nginx web zerbitzarirako JavaScript interpretea. Njs interpreteak ECMAScript estandarrak inplementatzen ditu eta nginx-ek eskaerak prozesatzeko gaitasuna zabaltzen dizu konfigurazioan scriptak erabiliz. Scriptak konfigurazio fitxategi batean erabil daitezke eskaerak prozesatzeko, konfigurazio bat sortzeko, erantzun bat dinamikoki sortzeko, eskaera/erantzun bat aldatzeko edo web aplikazioetako arazoak konpontzeko zirriborroak azkar sortzeko logika aurreratua definitzeko.

Bertsio berriak β€œjs_header_filter” zuzentaraua gehitzen du, eta horri esker, JavaScript funtzio bat ezar dezakezu erantzunen goiburu arbitrarioak iragazteko eta aldatzeko: js_import foo.js; kokapena / { 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 ? Zenbakia (r.args.len): 0; r.headersOut['Set-Cookie'] = cookies.filter(v=>v.length > len); } esportatu lehenetsia {iragazkia};

ngx.fetch() metodoa ere gehitu da, Fetch APIa inplementatzen duena, HTTP bezeroaren funtzionaltasuna eskaintzen duena. Metodoak gorputzaren, goiburuen, buffer_size eta max_response_body_size aukerak prozesatzen ditu. Itzulitako Response objektuak arrayBuffer(), bodyUsed, json(), headers, ok, redirect, status, statusText, text(), type eta url metodoak onartzen ditu eta Header objektuak get(), getAll() eta has() onartzen ditu. metodoak . 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)); }

NGINX Unit 1.22 aplikazio-zerbitzariaren argitalpena ere nabarmendu dezakezu, hainbat programazio-lengoaiatan web aplikazioak exekutatzeko irtenbide bat eskaintzen duena (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js eta Java). NGINX Unitateak hainbat aplikazio aldi berean exekutatu ditzake programazio-lengoaia ezberdinetan, eta horien abiarazte-parametroak dinamikoki alda daitezke konfigurazio fitxategiak editatu eta berrabiarazi beharrik gabe. Kodea C-n idatzita dago eta Apache 2.0 lizentziapean banatzen da.

NGINX Unitatearen bertsio berria egonkortasuna hobetzera, proba tresnak zabaltzera eta akatsak konpontzera bideratu zen. Linuxerako sortutako paketeetan, NGINX Unitatea exekutatzen den erabiltzailea eta taldea aldatu dira. Nobody:nobody beharrean, prozesuak unitate-taldeko erabiltzaile indibidualaren arabera exekutatzen dira. Node.js moduluko ServerRequest eta ServerResponse objektuen Stream APIarekin bateragarritasuna bermatu da. Python aplikazioetarako "bidea" aukerak hainbat direktorio zehaztu daitezke.

Iturria: opennet.ru

Gehitu iruzkin berria