A fost formată lansarea ramurii principale nginx 1.25.3, în cadrul căreia continuă dezvoltarea de noi funcționalități. În ramura stabilă 1.24.x, care este susținută în paralel, sunt efectuate doar modificări legate de remedieri de erori grave și vulnerabilități. Ulterior, pe baza ramurii principale 1.25.x va fi formată ramura stabilă 1.26. Codul proiectului este scris în limbajul C și este distribuit sub licența BSD.
Printre modificări:
- A fost întărită protecția împotriva activităților anormale ale clienților HTTP/2, și, în special, împotriva atacurilor DoS de tip „Rapid Reset”, în care se creează un număr mare de fluxuri resetate simultan în cadrul unei singure conexiuni HTTP/2. În configurația implicită, astfel de atacuri sunt limitate de numărul de cereri pe conexiune, denumit „keepalive_requests” (după fiecare 1000 de cereri, conexiunea va fi resetată) și de limitele „limit_req”. Pentru a reacționa mai rapid la inundațiile de cereri printr-un număr mare de fluxuri, a fost adăugată o limitare suplimentară care nu permite, implicit, crearea a mai mult de 256 (2 * max_concurrent_streams) noi fluxuri în fiecare ciclu de procesare a evenimentelor. Această nouă limitare permite începerea blocării cererilor înainte de atingerea limitei totale a numărului de fluxuri simultane, de exemplu, atunci când fluxurile sunt procesate asincron sau resetate. O modificare similară a fost de asemenea inclusă în lansarea angie 1.3.1 (fork nginx), publicată săptămâna trecută.
- A fost îmbunătățită gestionarea bufferelor utilizate la determinarea automată a conexiunilor HTTP/2.
- A fost crescută performanța lansării configurațiilor cu un număr mare de directive „location”.
- A fost remediată întreruperea programului la încercarea de utilizare a HTTP/2 fără SSL.
- A fost corectată gestionarea incorectă a antetului „Status” returnat de backend, care conținea un text explicativ gol.
- A fost eliminată scurgerea de memorie în timpul reconfigurării, care apărea la compilarea cu biblioteca PCRE2.
- A fost realizată o mare porțiune de remedieri și îmbunătățiri legate de suportul pentru protocolul HTTP/3.
În același timp, a avut loc lansarea njs 0.8.2, interpretul limbajului JavaScript pentru server web nginx. Interpretatorul njs implementează standardele ECMAScript și permite extinderea capacităților nginx pentru procesarea solicitărilor prin intermediul scripturilor în configurație. Scripturile pot fi utilizate în fișierul de configurație pentru a defini logica avansată de procesare a solicitărilor, a forma configurația, a genera dinamic răspunsuri, a modifica solicitările/răspunsurile sau a crea rapid stub-uri pentru soluționarea problemelor în aplicațiile web. În noua versiune a fost adăugat obiectul console, care oferă metodele error(), info(), log(), time(), timeEnd() și warn(). În modulul fs a fost adăugată metoda fs.existsSync().
De asemenea, se remarcă publicarea serverului de aplicații NGINX Unit 1.31.1, care oferă o soluție pentru rularea aplicațiilor web în diferite limbaje de programare (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js și Java). Sub gestionarea NGINX Unit, mai multe aplicații în diferite limbaje de programare pot rula simultan, iar parametrii de lansare pot fi modificați dinamic fără a fi necesară editarea fișierelor de configurație și repornirea. Pe lângă corectarea erorilor, în noua versiune, în modulul Wasm a fost permisă încărcarea datelor cu o dimensiune mai mare de 4 GB, iar în timpul răspunsului a fost oferită posibilitatea de a seta coduri de stare HTTP.
Sursa: opennet.ro
