Izdaja nginx 1.19.7, njs 0.5.1 in NGINX Unit 1.22.0

Izdana je bila glavna veja nginxa 1.19.7, znotraj katere se nadaljuje razvoj novih funkcij (v vzporedno podprti stabilni veji 1.18 so narejene le spremembe, ki se nanašajo na odpravo resnih napak in ranljivosti).

Večje spremembe:

  • Ko delavskemu procesu zmanjka prostih povezav, nginx zdaj zapre ne le vzdrževalne povezave, ampak tudi povezave, ki čakajo, da se vtičnica zapre (»zadržano zapiranje«).
  • Koda za obdelavo povezave v HTTP/2 je podobna izvedbi HTTP/1.x. Podpora za posamezne nastavitve "http2_recv_timeout", "http2_idle_timeout" in "http2_max_requests" je bila opuščena v korist splošnih direktiv "keepalive_timeout" in "keepalive_requests".
  • Nastavitve »http2_max_field_size« in »http2_max_header_size« sta bili odstranjeni in namesto tega je treba uporabiti »large_client_header_buffers«.

Istočasno je izšel njs 0.5.1, tolmač JavaScript za spletni strežnik nginx. Tolmač njs izvaja standarde ECMAScript in vam omogoča, da razširite zmožnost nginx za obdelavo zahtev z uporabo skriptov v konfiguraciji. Skripte je mogoče uporabiti v konfiguracijski datoteki za definiranje napredne logike za obdelavo zahtev, generiranje konfiguracije, dinamično generiranje odgovora, spreminjanje zahteve/odgovora ali hitro ustvarjanje škrbin za reševanje težav v spletnih aplikacijah.

Nova različica dodaja direktivo “js_header_filter”, ki vam omogoča nastavitev funkcije JavaScript za filtriranje in spreminjanje poljubnih glav odgovorov: js_import foo.js; lokacija / { js_header_filter foo.filter; proxy_pass http://127.0.0.1:8081/; } foo.js: filter funkcije(r) { var piškotkov = r.headersOut['Set-Cookie']; var len = r.args.len? Število (r.args.len): 0; r.headersOut['Set-Cookie'] = cookies.filter(v=>v.length > len); } izvoz privzetega {filtra};

Dodana je tudi metoda ngx.fetch(), ki implementira Fetch API, ki zagotavlja funkcionalnost odjemalca HTTP. Metoda podpira obdelavo možnosti body, headers, buffer_size in max_response_body_size. Vrnjeni objekt Response podpira metode arrayBuffer(), bodyUsed, json(), headers, ok, redirect, status, statusText, text(), type in url, objekt Header pa podpira get(), getAll() in has(). metode . funkcija fetch(r) { ngx.fetch('http://nginx.org/') .then(reply => reply.text()) .then(body => r.return(200, body)) .catch (e => r.return(501, e.message)); }

Opazite lahko tudi objavo aplikacijskega strežnika NGINX Unit 1.22, ki ponuja rešitev za izvajanje spletnih aplikacij v različnih programskih jezikih (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js in Java). Enota NGINX lahko hkrati izvaja več aplikacij v različnih programskih jezikih, katerih zagonske parametre je mogoče dinamično spreminjati brez urejanja konfiguracijskih datotek in ponovnega zagona. Koda je napisana v C in se distribuira pod licenco Apache 2.0.

Nova izdaja enote NGINX se je osredotočila na izboljšanje stabilnosti, razširitev orodij za testiranje in odpravljanje napak. V paketih, ustvarjenih za Linux, sta bila spremenjena uporabnik in skupina, pod katero deluje enota NGINX. Namesto nobody:nobody se procesi zdaj izvajajo pod posamezno uporabniško enoto v skupini enot. Zagotovljena združljivost z API-jem Stream objektov ServerRequest in ServerResponse iz modula Node.js. Možnost "path" za aplikacije Python omogoča določitev več imenikov.

Vir: opennet.ru

Dodaj komentar