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