Po roce vývoje byla zveřejněna nová stabilní verze vysoce výkonného HTTP serveru a vícestandardního proxy serveru nginx 1.26.0, která zahrnuje změny akumulované v hlavní větvi 1.25.x. V budoucnu budou veškeré změny v stabilní větvi 1.26 zaměřeny na odstranění vážných chyb a zranitelností. V brzké době bude vytvořena hlavní větev nginx 1.27, ve které bude pokračovat vývoj nových funkcí. Pro běžné uživatele, kteří nemusí zajišťovat kompatibilitu se třetími modulem, se doporučuje používat hlavní větev, na jejímž základě jsou každé tři měsíce vydávány verze komerčního produktu Nginx Plus.
Podle březnové zprávy společnosti Netcraft běží na nginx přibližně 243 milionů webových stránek (před rokem 289 milionů). Nginx se používá na 18.15 % všech aktivních webových stránek (před rokem 18.94 %, před dvěma lety 20.08 %), což odpovídá druhému místu v oblíbenosti v této kategorii (podíl Apache odpovídá 20.09 % (před rokem 20.52 %, před dvěma lety 22.58 %), Cloudflare — 14.12 % (11.32 %, 10.42 %), Google — 10.41 % (9.89 %, 8.89 %). Při zohlednění všech webových stránek si nginx stále udržuje pozici lídra a má 22.31 % podíl na trhu (před rokem 25.94 %, před dvěma lety — 31.13 %), zatímco podíl Apache odpovídá 20.17 % (20.58, 23.08 %), Cloudflare — 11.24 % (10.17, 5.49 %), OpenResty (platforma založená na nginx a LuaJIT) — 7.93 % (7.94 %, 8.01 %).
Mezi milionem nejnavštěvovanějších webů na světě má nginx podíl 20,63 % (před rokem 21,37 %, před dvěma lety 21,79 %), Cloudflare — 22,59 % (před rokem 21,62 %), Apache httpd — 20,09 % (21,18 %). Podle údajů W3Techs je nginx používán na 34,3 % webů z milionu nejnavštěvovanějších, v dubnu loňského roku tento podíl činil 34,5 %, předloňského — 33,1 %. Podíl Apache za rok poklesl z 32,2 % na 30,1 %, zatímco podíl Microsoft IIS klesl z 5,6 % na 4,8 %. Podíl Node.js vzrostl z 2,4 % na 3,2 %, a podíl LiteSpeed se zvýšil z 11,8 % na 12,9 %.
Nejvýznamnější vylepšení přidaná během vytváření hlavní větve 1.25.x:
- Byl přidán modul ngx_http_v3 s experimentální podporou protokolu HTTP/3. Pro sestavení modulu je k dispozici volba „—with-http_v3_module“. HTTP/3 definuje použití protokolu QUIC (Quick UDP Internet Connections) jako transportu pro HTTP/2. QUIC je nadstavba nad protokolem UDP, která podporuje multiplexování několika spojení a poskytuje šifrovací metody ekvivalentní TLS/SSL. Protokol byl vytvořen v roce 2013 společností Google jako alternativa k TCP+TLS pro web, která řeší problémy s dlouhou dobou nastavení a vyjednávání spojení v TCP a odstraňuje latenci při ztrátě paketů během přenosu dat.
- Byla přidána samostatná direktiva „http2“ pro selektivní zapnutí protokolu HTTP/2 v rámci serverového bloku (může být použita v jednotlivých blocích „server“). Parametr „http2“ v direktivě „listen“ byl označen jako zastaralý.
- Byla posílena ochrana proti anomální činnosti klientů HTTP/2, zejména proti DoS útokům typu „Rapid Reset“, při kterých je vytvářeno velké množství okamžitě zrušených proudů v rámci jednoho spojení HTTP/2. V defaultní konfiguraci jsou podobné útoky omezeny limitem na počet požadavků na spojení „keepalive_requests“ (po každých 1000 požadavcích bude spojení zrušeno) a omezeními „limit_req“. Pro rychlejší reakci na pov flood požadavků prostřednictvím velkého počtu proudů bylo přidáno další omezení, které ve výchozím nastavení neumožňuje vytvářet více než 256 (2 * max_concurrent_streams) nových proudů na každou událost. Nové omezení umožňuje začít blokovat požadavky před dosažením celkového limitu na počet současných proudů, například při zpracování proudů asynchronně nebo při jejich zrušení.
- Podpora byla přidána do modulu stream. virtuálních serverů, jejichž konfigurace je určena v bloku „server { … }“ pomocí direktivy server_name. server { server_name ~^(www\.)?(.+)$; proxy_pass www.$2:12345; }
- Byl přidán nový modul ngx_stream_pass_module, určený pro přesměrování přijatých spojení přímo na jakýkoli naslouchající socket spojený s takovými moduly jako http, stream a mail. stream { server { listen 12345 ssl; ssl_certificate domain.crt; ssl_certificate_key domain.key; pass 127.0.0.1:8000; } }
- V direktivě listen modulu stream byla implementována podpora pro parametry „deferred“ (vypíná zpožděný accept), „accept_filter“ (filtr příchozích spojení použít před voláním funkce accept) a „setfib“ (nastavení tabulky směrování).
- Pro některé architektury byla zavedena podpora určení velikosti bloku (cache line) používaného pro přenos dat mezi cache CPU a pamětí.
- 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 podpora technologie Server push v HTTP/2.
- Podpora direktivy „ssl“, dříve označené jako zastaralá, byla ukončena.
Stabilní vydání projektu FreeNginx 1.26.0, rozvíjejícího fork Nginx, bylo publikováno před dvěma týdny. Vývoj fork vede Maxim Dunin, jeden z klíčových vývojářů Nginx. FreeNginx je pozicionován jako neziskový projekt, který zajišťuje vývoj kódové základny Nginx bez korporátního zásahu.
Zdroj: opennet.ru
