Hovedgrenen af nginx 1.19.7 er blevet frigivet, inden for hvilken udviklingen af nye funktioner fortsætter (i den parallelt understøttede stabile gren 1.18 foretages kun ændringer relateret til eliminering af alvorlige fejl og sårbarheder).
Vigtigste ændringer:
- Når en arbejdsproces løber tør for ledige forbindelser, lukker nginx nu ikke kun keepalive-forbindelser, men også forbindelser, der venter på, at stikket lukker ("langende tæt").
- Forbindelsesbehandlingskoden i HTTP/2 er tæt på HTTP/1.x-implementeringen. Understøttelse af de individuelle indstillinger "http2_recv_timeout", "http2_idle_timeout" og "http2_max_requests" er udgået til fordel for de generelle direktiver "keepalive_timeout" og "keepalive_requests".
- Indstillingerne "http2_max_field_size" og "http2_max_header_size" er blevet fjernet, og "large_client_header_buffers" skal bruges i stedet.
Samtidig blev njs 0.5.1 frigivet, en JavaScript-fortolker til nginx-webserveren. njs-fortolkeren implementerer ECMAScript-standarder og giver dig mulighed for at udvide nginx's evne til at behandle anmodninger ved hjælp af scripts i konfigurationen. Scripts kan bruges i en konfigurationsfil til at definere avanceret logik til behandling af anmodninger, generering af en konfiguration, dynamisk generering af et svar, ændring af en anmodning/svar eller hurtigt oprettelse af stubs til at løse problemer i webapplikationer.
Den nye version tilføjer "js_header_filter"-direktivet, som giver dig mulighed for at indstille en JavaScript-funktion til filtrering og ændring af vilkårlige svaroverskrifter: js_import foo.js; placering / { 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 ? Antal(r.args.len): 0; r.headersOut['Set-Cookie'] = cookies.filter(v=>v.length > len); } eksport standard {filter};
Også tilføjet er ngx.fetch()-metoden, som implementerer Fetch API, som giver HTTP-klientfunktionalitet. Metoden understøtter behandling af body, headers, buffer_size og max_response_body_size muligheder. Det returnerede Response-objekt understøtter arrayBuffer(), bodyUsed, json(), headers, ok, redirect, status, statusText, text(), type og url-metoder, og Header-objektet understøtter get(), getAll() og 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.besked)); }
Du kan også bemærke udgivelsen af NGINX Unit 1.22 applikationsserveren, som tilbyder en løsning til at køre webapplikationer på forskellige programmeringssprog (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js og Java). NGINX Unit kan samtidigt køre flere applikationer på forskellige programmeringssprog, hvis startparametre kan ændres dynamisk uden behov for at redigere konfigurationsfiler og genstarte. Koden er skrevet i C og distribueret under Apache 2.0-licensen.
Den nye udgivelse af NGINX Unit fokuserede på at forbedre stabiliteten, udvide testværktøjer og rette fejl. I de pakker, der er genereret til Linux, er brugeren og gruppen, som NGINX Unit kører under, blevet ændret. I stedet for nobody:nobody kører processer nu under den enkelte brugerenhed i enhedsgruppen. Sikret kompatibilitet med Stream API af ServerRequest- og ServerResponse-objekterne fra Node.js-modulet. Muligheden "sti" for Python-applikationer tillader, at flere mapper kan specificeres.
Kilde: opennet.ru