ĂshtĂ« formuar lĂ«shimi i degĂ«s kryesore nginx 1.25.3, nĂ« tĂ« cilin vazhdon zhvillimi i mundĂ«sive tĂ« reja. NĂ« degĂ«n stabile 1.24.x, qĂ« mbĂ«shtetet paralelisht, bĂ«hen vetĂ«m ndryshime qĂ« lidhen me eliminimin e gabimeve serioze dhe dobĂ«sive. NĂ« tĂ« ardhmen, nga baza e degĂ«s kryesore 1.25.x do tĂ« formohet njĂ« degĂ« stabile 1.26. Kodi i projektit Ă«shtĂ« shkruar nĂ« gjuhĂ«n C dhe shpĂ«rndahet nĂ«n licencĂ«n BSD.
Among the changes:
- Forcuar mbrojtjen kundër aktiviteteve anormale të klientëve HTTP/2, dhe, veçanërisht, ndaj sulmeve DoS të klasës "Rapid Reset", në të cilat krijohet një numër i madh i dështimeve të menjëhershme brenda një lidhjeje HTTP/2. Në konfigurimin e paracaktuar, këto sulme kufizohen nga numri i kërkesave në lidhjen "keepalive_requests" (pas çdo 1000 kërkesash, lidhja do të dështojë) dhe nga kufizimet "limit_req". Për reagim më të hershëm ndaj fluksit të kërkesave përmes një numri të madh të proceseve, është shtuar një kufizim shtesë që nuk lejon për të krijuar në mënyrë të paracaktuar më shumë se 256 (2 * max_concurrent_streams) procese të reja për çdo cikël të përpunimit të ngjarjeve. Ky kufizim i ri lejon që të fillohet bllokimi i kërkesave para se të arrihet kufiri i përgjithshëm për numrin e proceseve të përkohshme, për shembull, kur proceset përpunohen në mënyrë asinkrone ose dështojnë. Një ndryshim i ngjashëm gjithashtu është përfshirë në lëshimin angie 1.3.1 (fork i nginx), i publikuar javën e kaluar.
- Përmirësuar menaxhimi i bufferave të përdorur në automatikun e identifikimit të lidhjeve HTTP/2.
- Rritur performancën e fillimit të konfigurimeve me një numër të madh direktivash "location".
- Eliminimi i dështimit të procesit të punës, i vërejtur gjatë përpjekjeve për të përdorur HTTP/2 pa SSL.
- Korrigjimi i trajtimit të papërshtatshëm të titullit "Status" të kthyer nga backend me tekst shpjegues të zbrazët.
- Eliminimi i rrjedhjes së memories gjatë riparametrizimit, që ndodhi gjatë ndërtimit me bibliotekën PCRE2.
- Dërguar një mori të madhe të korrigjimeve dhe përmirësimeve që lidhen me mbështetje për protokollin HTTP/3.
Njëkohësisht u formua lëshimi njs 0.8.2, interpretuese e gjuhës JavaScript për web nginx. Interpretuese njs zbatohet standardet ECMAScript dhe lejon zgjerimin e mundësive të nginx për përpunimin e kërkesave përmes skripteve në konfigurim. Skriptet mund të përdoren në dosjen e konfigurimit për të përcaktuar logjikën e zgjeruar të përpunimit të kërkesave, formësimin e konfigurimit, gjenerimin dinamik të përgjigjeve, modifikimin e kërkesës/përgjigjes ose krijimin e shpejtë të zëvendësimeve për zgjidhjen e problemeve në aplikacionet web. Në versionin e ri është shtuar objekti console, që ofron metodat error(), info(), log(), time(), timeEnd() dhe warn(). Në modul fs është shtuar metoda fs.existsSync().
Gjithashtu mund të theksohet publikimi i serverit të aplikacioneve NGINX Unit 1.31.1, që ofron zgjidhje për ekzekutimin e aplikacioneve web në gjuhë të ndryshme programimi (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js dhe Java). NUnder menaxhimin e NGINX Unit mund të ekzekutohen njëkohësisht disa aplikacione në gjuhë të ndryshme programimi, parametrat e fillimit të të cilëve mund të ndryshohen dinamikisht pa pasur nevojë të redaktohen dosjet e konfigurimit dhe të rindezën. Përveç rregullimeve të gabimeve, në versionin e ri në modulin Wasm është lejuar ngarkimi i të dhënave më të mëdha se 4 GB, dhe në përgjigje është ofruar mundësia për të vendosur kodet e statusit HTTP.
Burimi: opennet.ru
