Liberigo de nginx 1.19.7, njs 0.5.1 kaj NGINX-Unuo 1.22.0

La ĉefa branĉo de nginx 1.19.7 estis liberigita, ene de kiu la disvolviĝo de novaj funkcioj daŭras (en la paralela subtenata stabila branĉo 1.18, nur ŝanĝoj rilataj al la forigo de gravaj eraroj kaj vundeblecoj estas faritaj).

Ĉefaj ŝanĝoj:

  • Kiam laborprocezo elĉerpigas senpagajn konektojn, nginx nun fermas ne nur daŭrajn konektojn, sed ankaŭ konektojn atendantajn ke la ingo fermiĝos ("daŭra proksima").
  • La koneksa prilabora kodo en HTTP/2 estas proksima al la efektivigo de HTTP/1.x. Subteno por la individuaj agordoj "http2_recv_timeout", "http2_idle_timeout" kaj "http2_max_requests" estis nuligita favore al la ĝeneralaj direktivoj "keepalive_timeout" kaj "keepalive_requests".
  • La agordoj "http2_max_field_size" kaj "http2_max_header_size" estis forigitaj kaj "large_client_header_buffers" devus esti uzata anstataŭe.

Samtempe, njs 0.5.1 estis liberigita, JavaScript-interpretisto por la retservilo nginx. La interpretisto njs efektivigas ECMAScript-normojn kaj ebligas al vi vastigi la kapablon de nginx prilabori petojn per skriptoj en la agordo. Manuskriptoj povas esti uzataj en agorda dosiero por difini progresintan logikon por prilabori petojn, generante konfiguracion, dinamike generante respondon, modifante peton/respondon aŭ rapide kreante stumpojn por solvi problemojn en retejo-aplikoj.

La nova versio aldonas la direktivon "js_header_filter", kiu ebligas al vi agordi JavaScript-funkcion por filtri kaj ŝanĝi arbitrajn respondtitolojn: js_import foo.js; loko / { js_header_filter foo.filter; prokurilo_paso http://127.0.0.1:8081/; } foo.js: function filter(r) { var cookies = r.headersOut['Set-Cookie']; var len = r.args.len ? Nombro(r.args.len) : 0; r.headersOut['Set-Cookie'] = kuketoj.filtrilo(v=>v.longo > len); } eksporti defaŭltan {filtrilon};

Aldonas ankaŭ la metodo ngx.fetch(), kiu efektivigas la Fetch API, kiu provizas HTTP-klientan funkcion. La metodo subtenas prilaboradon de opcioj body, headers, buffer_size kaj max_response_body_size. La resendita Respondobjekto subtenas arrayBuffer(), bodyUsed, json(), kapliniojn, ok, alidirektilon, statuson, statusText, text(), tipon kaj url-metodojn, kaj la Header-objekto subtenas get(), getAll() kaj has() metodoj. function fetch (r) { ngx.fetch ('http://nginx.org/') .then (respondo => reply.text ()) .then (korpo => r.return (200, korpo)) .catch (e => r.return(501, e.mesaĝo)); }

Vi ankaŭ povas noti la publikigon de la aplikaĵoservilo NGINX Unit 1.22, kiu ofertas solvon por ruli retajn aplikojn en diversaj programlingvoj (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js kaj Java). NGINX-Unuo povas samtempe ruli plurajn aplikojn en malsamaj programlingvoj, kies lanĉaj parametroj povas esti ŝanĝitaj dinamike sen neceso redakti agordajn dosierojn kaj rekomenci. La kodo estas skribita en C kaj distribuita sub la licenco Apache 2.0.

La nova eldono de NGINX-Unuo koncentriĝis pri plibonigo de stabileco, vastigado de testaj iloj kaj riparado de cimoj. En la pakaĵoj generitaj por Linukso, la uzanto kaj grupo sub kiuj funkcias NGINX-Unuo estis ŝanĝitaj. Anstataŭ nobody:nobody, procezoj nun funkcias sub la individua uzantunuo en la grupunuo. Certigita kongruo kun la Stream API de la objektoj ServerRequest kaj ServerResponse de la modulo Node.js. La "voja" opcio por Python-aplikoj permesas specifi plurajn dosierujojn.

fonto: opennet.ru

Aldoni komenton