Release av nginx 1.19.7, njs 0.5.1 och NGINX Unit 1.22.0

Huvudgrenen av nginx 1.19.7 har släppts, inom vilken utvecklingen av nya funktioner fortsätter (i den parallellt stödda stabila grenen 1.18 görs endast ändringar relaterade till eliminering av allvarliga fel och sårbarheter).

Huvudändringar:

  • När en arbetsprocess tar slut på lediga anslutningar, stänger nginx nu inte bara keepalive-anslutningar, utan även anslutningar som väntar på att socket ska stängas (”dröjande nära”).
  • Anslutningsbearbetningskoden i HTTP/2 är nära HTTP/1.x-implementeringen. Stödet för de individuella inställningarna "http2_recv_timeout", "http2_idle_timeout" och "http2_max_requests" har upphört till förmån för de allmänna direktiven "keepalive_timeout" och "keepalive_requests".
  • Inställningarna "http2_max_field_size" och "http2_max_header_size" har tagits bort och "large_client_header_buffers" ska användas istället.

Samtidigt släpptes njs 0.5.1, en JavaScript-tolk för nginx-webbservern. njs-tolken implementerar ECMAScript-standarder och låter dig utöka nginx förmåga att bearbeta förfrågningar med hjälp av skript i konfigurationen. Skript kan användas i en konfigurationsfil för att definiera avancerad logik för att bearbeta förfrågningar, generera en konfiguration, dynamiskt generera ett svar, modifiera en begäran/svar eller snabbt skapa stubbar för att lösa problem i webbapplikationer.

Den nya versionen lägger till direktivet "js_header_filter", som låter dig ställa in en JavaScript-funktion för att filtrera och ändra godtyckliga svarsrubriker: js_import foo.js; plats / { 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 standard {filter};

Metoden ngx.fetch() läggs också till, som implementerar Fetch API, som tillhandahåller HTTP-klientfunktionalitet. Metoden stöder bearbetning av body, headers, buffer_size och max_response_body_size alternativ. Det returnerade Response-objektet stöder arrayBuffer(), bodyUsed, json(), headers, ok, redirect, status, statusText, text(), typ och url-metoder, och Header-objektet stöder get(), getAll() och has() metoder . function fetch(r) { ngx.fetch('http://nginx.org/') .then(reply => reply.text()) .then(body => r.return(200, body)) .catch (e => r.return(501, e.meddelande)); }

Du kan också notera publiceringen av applikationsservern NGINX Unit 1.22, som erbjuder en lösning för att köra webbapplikationer på olika programmeringsspråk (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js och Java). NGINX Unit kan köra flera applikationer samtidigt i olika programmeringsspråk, vars startparametrar kan ändras dynamiskt utan att behöva redigera konfigurationsfiler och starta om. Koden är skriven i C och distribueras under Apache 2.0-licensen.

Den nya utgåvan av NGINX Unit fokuserade på att förbättra stabiliteten, utöka testverktygen och fixa buggar. I paketen som genereras för Linux har användaren och gruppen som NGINX Unit körs under ändrats. Istället för nobody:nobody körs nu processer under den individuella användarenheten i enhetsgruppen. Säkerställd kompatibilitet med Stream API för ServerRequest- och ServerResponse-objekten från Node.js-modulen. Alternativet "sökväg" för Python-applikationer tillåter att flera kataloger specificeras.

Källa: opennet.ru

Lägg en kommentar