Izdanje nginxa 1.19.7, njs 0.5.1 i NGINX jedinice 1.22.0

Objavljena je glavna grana nginxa 1.19.7 unutar koje se nastavlja razvoj novih značajki (u paralelno podržanoj stabilnoj grani 1.18 samo su izmjene koje se odnose na otklanjanje ozbiljnih grešaka i ranjivosti).

Velike promjene:

  • Kada radnom procesu ponestane slobodnih veza, nginx sada zatvara ne samo održavajuće veze, već i veze koje čekaju da se utičnica zatvori ("dugotrajno zatvaranje").
  • Kod za obradu veze u HTTP/2 blizak je implementaciji HTTP/1.x. Podrška za pojedinačne postavke "http2_recv_timeout", "http2_idle_timeout" i "http2_max_requests" ukinuta je 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 poslužitelj. njs interpreter implementira ECMAScript standarde i omogućuje vam da proširite sposobnost nginxa za obradu zahtjeva pomoću skripti 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 stvaranje zaglavlja za rješavanje problema u web aplikacijama.

Nova verzija dodaje direktivu “js_header_filter”, koja vam omogućuje postavljanje JavaScript funkcije 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: filter funkcije(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); } export default {filter};

Dodana je i metoda ngx.fetch(), koja implementira Fetch API, koji pruža funkcionalnost HTTP klijenta. Metoda podržava obradu opcija body, headers, buffer_size i max_response_body_size. Vraćeni Response objekt podržava arrayBuffer(), bodyUsed, json(), zaglavlja, ok, redirect, status, statusText, text(), type i url metode, a Header objekt 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 aplikacijskog poslužitelja NGINX Unit 1.22, koji nudi rješenje za pokretanje web aplikacija u različitim programskim jezicima (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js i Java). NGINX Unit može istovremeno pokretati više aplikacija u 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-u i distribuira se pod licencom Apache 2.0.

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

Izvor: opennet.ru

Dodajte komentar