Byla vydána hlavní verze nginx 1.25.3, v rámci které pokračuje rozvoj nových funkcí. V paralelně udržované stabilní větvi 1.24.x jsou prováděny pouze změny související s odstraněním závažných chyb a zranitelností. V budoucnu bude na základě hlavní větve 1.25.x vytvořena stabilní větev 1.26. Kód projektu je napsán v jazyce C a je distribuován pod licencí BSD.
Mezi změnami:
- Byla posílena ochrana proti anomální aktivitě klientů HTTP/2, a zejména proti DoS útokům třídy „Rapid Reset“, při nichž se vytváří velké množství okamžitě resetovaných proudů v rámci jednoho spojení HTTP/2. V základní konfiguraci podobné útoky narážejí na limit na počet požadavků na spojení „keepalive_requests“ (po každých 1000 požadavcích bude spojení resetováno) a na omezení „limit_req“. Pro rychlejší reakci na spamové požadavky prostřednictvím velkého počtu proudů bylo přidáno další omezení, které standardně neumožňuje vytvořit více než 256 (2 * max_concurrent_streams) nových proudů na každém cyklu zpracování událostí. Nové omezení umožňuje začít blokovat požadavky dříve, než je dosaženo celkového limitu na počet současných proudů, například při zpracování proudů asynchronně nebo při jejich resetování. Podobná změna byla také součástí vydání angie 1.3.1 (fork nginx), které bylo zveřejněno před týdnem.
- Bylo vylepšeno řízení bufferů používaných při automatickém určování spojení HTTP/2.
- Byl zvýšen výkon spouštění konfigurací s větším počtem direktiv „location“.
- Byla odstraněna havárie pracovního procesu, ke které došlo při pokusu o použití HTTP/2 bez SSL.
- Byla opravena nesprávná úprava vraceného záhlaví backendem „Status“ s prázdným vysvětlujícím textem.
- Byla odstraněna chyba s únikem paměti při rekonfiguraci, která se objevovala při kompilaci s knihovnou PCRE2.
- Bylo provedeno velké množství oprav a vylepšení souvisejících s podporou protokolu HTTP/3.
Současně byl uveden na trh njs 0.8.2, interpretr jazyka JavaScript pro webového serveru nginx. Interpretátor njs implemenuje standardy ECMAScript a umožňuje rozšířit schopnosti nginx při zpracování požadavků pomocí skriptů v konfiguraci. Skripty mohou být použity v konfiguračním souboru k definici rozšířené logiky zpracování požadavků, formování konfigurace, dynamické generaci odpovědí, modifikaci požadavků/odpovědí nebo rychlému vytváření zástupců pro řešení problémů ve webových aplikacích. V nové verzi byl přidán objekt console, který poskytuje metody error(), info(), log(), time(), timeEnd() a warn(). Do modulu fs byla přidána metoda fs.existsSync().
Také lze zmínit publikaci aplikačního serveru NGINX Unit 1.31.1, který poskytuje řešení pro spouštění webových aplikací v různých programovacích jazycích (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js a Java). Pod správou NGINX Unit může současně běžet několik aplikací v různých programovacích jazycích, přičemž parametry spuštění lze dynamicky měnit bez nutnosti úpravy konfiguračních souborů a restartu. Kromě opravy chyb v nové verzi bylo v modulu Wasm povoleno nahrávání dat větších než 4 GB a při odpovědi byla poskytnuta možnost nastavení stavových kódů HTTP.
Zdroj: opennet.ru
