Huvudversionen av nginx 1.19.7 har slÀppts och utvecklingen av nya funktioner fortsÀtter (i den parallellt stödjda stabila versionen 1.18 görs endast Àndringar relaterade till att ÄtgÀrda allvarliga fel och sÄrbarheter).
Huvudsakliga förÀndringar:
- NÀr arbetsprocessen har slut pÄ fria anslutningar stÀnger nginx nu inte bara keepalive-anslutningar, utan Àven anslutningar som Àr i vÀntelÀge för att stÀnga socketen ("lingering close").
- Kodhanteringen för anslutningar i HTTP/2 har anpassats till implementationen av HTTP/1.x. Stödet för individuella instÀllningar av "http2_recv_timeout", "http2_idle_timeout" och "http2_max_requests" har upphört till förmÄn för gemensamma direktiv som "keepalive_timeout" och "keepalive_requests".
- InstÀllningarna "http2_max_field_size" och "http2_max_header_size" har tagits bort, och istÀllet bör "large_client_header_buffers" anvÀndas.
Samtidigt har njs 0.5.1 slÀppts, vilket Àr en JavaScript-tolkare för webbservern nginx. Tolkaren njs implementerar ECMAScript-standarder och gör det möjligt att utöka nginx:s funktionalitet för att hantera förfrÄgningar med hjÀlp av skript i konfigurationen. Skript kan anvÀndas i konfigurationsfilen för att definiera avancerad logik för förfrÄgningshantering, konfigurera instÀllningar, dynamiskt generera svar, modifiera förfrÄgan/svar eller snabbt skapa stubbar för att lösa problem i webbapplikationer.
I den nya versionen har direktivet "js_header_filter" lagts till, vilket gör det möjligt att ange en JavaScript-funktion för filtrering och Ă€ndring av godtyckliga headers i svaret: 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};
En metod ngx.fetch() har ocksĂ„ lagts till, vilket implementerar Fetch API och tillhandahĂ„ller HTTP-klientfunktionalitet. Metoden stöder hantering av alternativ som body, headers, buffer_size och max_response_body_size. I det returnerade objektet Response stöds metoderna arrayBuffer(), bodyUsed, json(), headers, ok, redirect, status, statusText, text(), type och url, medan i objektet Header stöds metoderna get(), getAll() och 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)); }
Det Àr ocksÄ vÀrt att nÀmna publiceringen servern NGINX Unit 1.22 erbjuder en lösning för att köra webbapplikationer pÄ olika programmeringssprÄk (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js och Java). Flera applikationer kan köras samtidigt pÄ olika programmeringssprÄk under NGINX Unit, och startparametrarna kan Àndras dynamiskt utan att behöva redigera konfigurationsfiler eller starta om tjÀnsten. Koden Àr skriven i C och distribueras under Apache 2.0-licensen.
I den nya utgÄvan av NGINX Unit har fokus lagts pÄ att öka stabiliteten, utöka testverktygen och ÄtgÀrda buggar. AnvÀndar- och gruppinstÀllningarna som anvÀnds för att köra NGINX Unit i de skapade paketen för Linux har Àndrats. IstÀllet för nobody:nobody körs processerna nu under den separata anvÀndaren unit i gruppen unit. Kompatibilitet med API Stream-objekten ServerRequest och ServerResponse frÄn Node.js-modulen har sÀkerstÀllts. För Python-applikationer tillÄts nu angivande av flera kataloger i alternativet "path".
KĂ€lla: opennet.ru
