Lansarea nginx 1.19.7, njs 0.5.1 și NGINX Unit 1.22.0

A fost lansată ramura principală a nginx 1.19.7, în cadrul căreia dezvoltarea de noi funcții continuă (în ramura stabilă 1.18 suportată în paralel se fac doar modificări legate de eliminarea erorilor și vulnerabilităților grave).

Principalele modificări:

  • Când un proces de lucru rămâne fără conexiuni gratuite, nginx închide acum nu numai conexiunile keepalive, ci și conexiunile care așteaptă ca socketul să se închidă („închidere persistentă”).
  • Codul de procesare a conexiunii în HTTP/2 este aproape de implementarea HTTP/1.x. Suportul pentru setările individuale „http2_recv_timeout”, „http2_idle_timeout” și „http2_max_requests” a fost întrerupt în favoarea directivelor generale „keepalive_timeout” și „keepalive_requests”.
  • Setările „http2_max_field_size” și „http2_max_header_size” au fost eliminate, iar „large_client_header_buffers” ar trebui să fie folosit în schimb.

În același timp, njs 0.5.1, un interpretor JavaScript pentru server web nginx. Interpretorul njs implementează standardele ECMAScript și vă permite să extindeți capacitățile de procesare a cererilor nginx folosind scripturi de configurare. Scripturile pot fi utilizate în fișierul de configurare pentru a defini logica avansată de procesare a cererilor, a genera configurații, a genera dinamic răspunsuri, a modifica cereri/răspunsuri sau a crea rapid stub-uri pentru a rezolva problemele din aplicațiile web.

Noua versiune adaugă directiva „js_header_filter”, care vă permite să setați o funcție JavaScript pentru filtrarea și modificarea antetelor de răspuns arbitrare: js_import foo.js; locație / { js_header_filter foo.filter; proxy_pass http://127.0.0.1:8081/; } foo.js: function filter(r) { var cookie = r.headersOut['Set-Cookie']; var len = r.args.len ? Număr(r.args.len): 0; r.headersOut['Set-Cookie'] = cookies.filter(v=>v.length > len); } export implicit {filtru};

De asemenea, este adăugată metoda ngx.fetch(), care implementează API-ul Fetch, care oferă funcționalitate client HTTP. Metoda acceptă procesarea opțiunilor body, headers, buffer_size și max_response_body_size. Obiectul Response returnat acceptă metodele arrayBuffer(), bodyUsed, json(), headers, ok, redirect, status, statusText, text(), tip și url, iar obiectul Header acceptă get(), getAll() și has() metode . 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)); }

De asemenea, puteți marca publicația Server NGINX Unit 1.22, o soluție pentru rularea aplicațiilor web scrise în diverse limbaje de programare (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js și Java). NGINX Unit poate rula simultan mai multe aplicații scrise în limbaje diferite, iar parametrii de lansare a acestora pot fi modificați dinamic fără a fi nevoie să editați fișierele de configurare sau să reporniți. Codul este scris în C și este licențiat sub licența Apache 2.0.

Noua versiune NGINX Unit s-a concentrat pe îmbunătățirea stabilității, extinderea capacităților de testare și remedierea erorilor. Linux Utilizatorul și grupul sub care rulează NGINX Unit în pachete au fost modificate. În loc de nobody:nobody, procesele rulează acum sub un utilizator separat numit unitate în grupul de unități. A fost asigurată compatibilitatea cu API-ul Stream pentru obiectele ServerRequest și ServerResponse din modulul Node.js. Acum pot fi specificate mai multe directoare în opțiunea „path” pentru aplicațiile Python.

Sursa: opennet.ru

Cumpărați găzduire de încredere pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără găzduire web fiabilă cu protecție DDoS, servere VPS VDS | ProHoster