Představujeme vydání hlavní větve nginx 1.27.5, ve které pokračuje vývoj nových funkcí. Do paralelně podporované stabilní větve 1.26.x jsou zaváděny pouze změny spojené s odstraňováním závažných chyb a zranitelností. V budoucnu bude na základě hlavní větve 1.27.x vytvořena stabilní větev 1.28. Kód projektu je napsán v jazyce C a je distribuován pod licencí BSD.
Mezi změnami v nginx 1.27.5:
- Pro spojení využívající protokol QUIC byla přidána podpora algoritmu pro řízení síťového přetížení CUBIC (RFC 9438), jehož funkce spočívá v postupném zvyšování velikosti okna přetížení, dokud nedojde ke ztrátě paketů, po níž se velikost okna vrací na hodnotu před ztrátou. V provedených testech použití CUBIC umožnilo snížit čas přenosu souboru o velikosti 500 MB o 24 % při zpoždění 40 ms a BDP 750K (Bandwidth Delay Product) a o 73 % při zpoždění 100 ms a BDP 9M.
- Maximální velikost cacheovaných v sdílené paměti SSL sezení byla zvýšena na 8192.
- Byla zajištěna kompilace s C knihovnou Musl.
- Byla provedena optimalizace výkonu a odstranění chyb v implementaci HTTP/3.
- Byly opraveny chyby v implementaci direktiv „grpc_ssl_password_file“, „proxy_ssl_password_file“ a „uwsgi_ssl_password_file“, které se projevovaly při načítání SSL certifikátů a klíčů šifrování z proměnných.
- Byly odstraněny problémy s nastavením proměnných $ssl_curve a $ssl_curves při použití připojitelných implementací eliptických křivek v OpenSSL.
Dále je třeba zmínit publikaci stabilních verzí projektu FreeNginx 1.27.5 a 1.27.6, která rozvíjí fork Nginx. Vývoj fork vedl Maxim Dunin, jeden z klíčových vývojářů Nginx. FreeNginx je prezentován jako nekomerční projekt, který zajišťuje vývoj kódu Nginx bez korporátního zasahování.
Změny ve FreeNginx 1.27.5 a 1.27.6:
- Byly vyřešeny problémy při použití OpenSSL 3.5 (v proměnných $ssl_curve a $ssl_curves se nezobrazoval název skupiny X25519MLKEM768).
- Bylo odstraněno selhání pracovníka v konfiguracích s direktivou proxy_ssl_password_file, projevující se při uvádění proměnných v direktivách proxy_ssl_certificate a proxy_ssl_certificate_key.
- Do direktivy listen byla přidána podpora parametru multipath.
- Opakované použití SSL sezení mezi servery, které používají různé certifikáty v direktivě ssl_trusted_certificate, je zakázáno při zapnutí ověřování klientských SSL certifikátů.
- Byl vyřešen problém s opakovaným použitím sezení v kontextu jiného virtuálního serveru při používání TLSv1.3 s OpenSSL 1.1.1e+.
- Byl vyřešen problém při používání zlib-ng.
Kromě toho byl vydán njs 0.8.10, modulu pro integraci interpretátorů JavaScriptu do http serveru nginx. Podporuje napojení různých JavaScriptových enginů. Jako základní je nabízen vlastní engine QuickJS s podporou specifikace ECMAScript 2023. Njs umožňuje používat JavaScriptové skripty v konfiguraci pro rozšíření možností nginx. Skripty mohou být použity k definici rozšířené logiky zpracování požadavků, vytváření konfigurace, dynamické generaci odpovědi, modifikaci požadavků/odpovědí nebo k rychlému vytváření zástupců s řešením problémů ve webových aplikacích.
Změny v njs 0.8.10:
- Do JavaScriptového enginu QuickJS byla přidána podpora API WebCrypto, TextEncoder a TextDecoder.
- Do enginu QuickJS byly přidány nové moduly querystring, crypto a xml.
- Byla přidána podpora knihovny QuickJS-NG.
- V modulu k nginx bylo realizováno čtení obsahu r.requestText a r.requestBuffer z dočasného souboru.
Zdroj: opennet.ru
