Izdanje nginxa 1.19.7, njs 0.5.1 i NGINX jedinice 1.22.0

Objavljena je glavna grana nginx-a 1.19.7 u okviru koje se nastavlja razvoj novih karakteristika (u paralelno podržanoj stabilnoj grani 1.18 urađene su samo promjene koje se odnose na eliminaciju ozbiljnih grešaka i ranjivosti).

Glavne promjene:

  • Kada radnom procesu ponestane slobodnih konekcija, nginx sada zatvara ne samo veze koje se održavaju, već i veze koje čekaju da se soket zatvori („zastojno zatvaranje“).
  • Kod za obradu veze u HTTP/2 je blizak implementaciji HTTP/1.x. Podrška za pojedinačne postavke "http2_recv_timeout", "http2_idle_timeout" i "http2_max_requests" je ukinuta u korist općih direktiva "keepalive_timeout" i "keepalive_requests".
  • Postavke "http2_max_field_size" i "http2_max_header_size" su uklonjene i umjesto njih treba koristiti "large_client_header_buffers".

Istovremeno je objavljen njs 0.5.1, JavaScript interpreter za nginx web server. njs interpreter implementira standarde ECMAScript i omogućava vam da proširite nginx-ovu sposobnost da obrađuje zahtjeve koristeći skripte u konfiguraciji. Skripte se mogu koristiti u konfiguracijskoj datoteci za definiranje napredne logike za obradu zahtjeva, generiranje konfiguracije, dinamičko generiranje odgovora, modificiranje zahtjeva/odgovora ili brzo kreiranje stubova za rješavanje problema u web aplikacijama.

Nova verzija dodaje direktivu “js_header_filter” koja vam omogućava da postavite JavaScript funkciju za filtriranje i promjenu proizvoljnih zaglavlja odgovora: js_import foo.js; lokacija / { js_header_filter foo.filter; proxy_pass http://127.0.0.1:8081/; } foo.js: funkcija filter(r) { var cookies = r.headersOut[‘Set-Cookie’]; var len = r.args.len ? Broj(r.args.len) : 0; r.headersOut[‘Set-Cookie’] = cookies.filter(v=>v.length > len); } izvoz default {filter};

Dodata je i metoda ngx.fetch(), koja implementira Fetch API, koji pruža funkcionalnost HTTP klijenta. Metoda podržava obradu tijela, zaglavlja, buffer_size i max_response_body_size opcija. Vraćeni objekt Response podržava arrayBuffer(), bodyUsed, json(), zaglavlja, ok, preusmjeravanje, status, statusText, text(), tip i url metode, a objekt Header podržava 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)); }

Također možete primijetiti objavljivanje servera aplikacija NGINX Unit 1.22, koji nudi rješenje za pokretanje web aplikacija na različitim programskim jezicima (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js i Java). NGINX jedinica može istovremeno pokrenuti više aplikacija na različitim programskim jezicima, čiji se parametri pokretanja mogu dinamički mijenjati bez potrebe za uređivanjem konfiguracijskih datoteka i ponovnim pokretanjem. Kod je napisan u C i distribuira se pod licencom Apache 2.0.

Novo izdanje NGINX jedinice fokusirano je na poboljšanje stabilnosti, proširenje alata za testiranje i ispravljanje grešaka. U paketima generiranim za Linux, korisnik i grupa pod kojima radi NGINX jedinica su promijenjeni. Umjesto nobody:nobody, procesi se sada pokreću pod individualnom korisničkom jedinicom u jedinici grupe. Osigurana kompatibilnost sa Stream API-jem objekata ServerRequest i ServerResponse iz modula Node.js. Opcija "putanja" za Python aplikacije omogućava navođenje više direktorija.

izvor: opennet.ru

Dodajte komentar