Po roce vývoje byla zveřejněna nová stabilní verze vysoce výkonného HTTP serveru a vícetranského proxy serveru nginx 1.30.0, která zahrnuje změny shromážděné v hlavní větvi 1.29.x. V budoucnu budou všechny změny ve stabilní větvi 1.30 zaměřeny na odstranění závažných chyb a zranitelností. Brzy bude vytvořena hlavní větev nginx 1.31, ve které bude pokračovat vývoj nových funkcí. Pro běžné uživatele, kteří nechtějí zajišťovat kompatibilitu s externími moduly, se doporučuje používat hlavní větev, na jejímž základě se každé tři měsíce uskutečňují vydání komerčního produktu Nginx Plus. Kód nginx je napsán v jazyce C a distribuuje se pod licencí BSD.
Podle únorové zprávy společnosti Netcraft běží na nginx přibližně 321 milionů webových stránek (před rokem 245 milionů, před dvěma lety — 243 milionů, před třemi lety 289 milionů). Nginx se používá na 16,08 % všech aktivních webů (před rokem 17,89 %, před dvěma lety 18,15 %, před třemi lety 18,94 %), což odpovídá druhému místu v popularitě v této kategorii (podíl Apache odpovídá 13,27 % (před rokem 16,03 %, před dvěma lety 20,09 %, před třemi lety 20,52 %), Cloudflare — 20,62 % (17,81 %, 14,12 %, 11,32 %), Google — 10,65 % (9,89 %, 10,41 %, 9,89 %).
Pokud zohledníme všechny webové stránky, nginx stále dominuje a zaujímá 22,65 % trhu (před rokem 20,48 %, před dvěma lety — 22,31 %, před třemi lety — 25,94 %), zatímco podíl Apache odpovídá 12,19 % (16,03 %, 20,17 %, 20,58 %), Cloudflare — 15,27 % (12,87 %, 11,24 %, 10,17 %), OpenResty (platforma založená na nginx a LuaJIT) — 8,01 % (9,36 %, 7,93 %, 7,94 %).
Mezi milionem nejnavštěvovanějších webových stránek na světě má nginx druhé místo s podílem 19,85 % (před rokem 20,37 %, před dvěma lety 20,63 %, před třemi lety 21,37 %). První místo drží Cloudflare — 26,84 % (22,32 %, 22,59 %, 21,62 %). Podíl Apache httpd — 15,84 % (17,95 %, 20,09 %, 21,18 %). 
Dle údajů W3Techs se nginx používá na 32,8 % webových stránek z milionu nejnavštěvovanějších (v dubnu minulého roku byla tato hodnota 33,8 %, předminulého roku — 34,3 %). Podíl Apache za rok klesl z 26,3 % na 23,9 %, podíl Microsoft IIS klesl z 4 % na 3,4 %, a podíl Caddy z 0,3 % na 0,2 %. Podíl Node.js vzrostl z 4,4 % na 6,0 %, a podíl LiteSpeed vzrostl z 14,6 % na 15,2 %.
Nejvýznamnější vylepšení přidaná v procesu vytváření hlavní větve 1.29.x:
- Byla přidána podpora TLS rozšíření ECH (Encrypted ClientHello), které navazuje na rozšíření ESNI (Encrypted Server Name Indication) a slouží k šifrování informací o parametrech TLS sezení, jako je požadované doménové jméno. Hlavním rozdílem mezi ECH a ESNI je to, že v ECH je celé TLS zpráva ClientHello šifrována místo šifrování jednotlivých polí, což umožňuje blokovat úniky přes pole, které ESNI nezahrnuje, jako například pole PSK (Pre-Shared Key). Použití ECH se aktivuje uvedením souboru konfigurace ECHConfig ve formátu PEM v direktivě „ssl_ech_file“. Podpora je dostupná při použití sestavení OpenSSL s ECH.
- Byla přidána podpora protokolu Multipath TCP (MPTCP), který umožňuje doručovat pakety současně přes několik tras prostřednictvím různých síťových rozhraní. Do direktivy „listen“ byl přidán parametr „multipath“.
- Byla přidána možnost vazby sezení klientů na stejné servery ve skupině. Dostupné jsou tři metody: „cookie“ — přenos dat o vybraném serveru prostřednictvím uvedené Cookie; „route“ — proxy server při prvním požadavku přiděluje klientovi trasu; „learn“ — nginx analyzuje odpovědi od upstream serveru a pamatuje si sezení, která server začal. Pro nastavení vazby byla do bloku „upstream“ modulu „http“ přidána direktiva „sticky“, a do direktivy „server“ byly přidány parametry „route“ a „drain“.
- Byla přidána direktiva „early_hints“ a realizována podpora HTTP kódu 103 v odpovědích od backendů proxy a gRPC. Kód 103 umožňuje informovat klienta o obsahu některých HTTP hlaviček ihned po požadavku, aniž by čekal, až server provede všechny operace související s požadavkem a začne poskytování obsahu. Podobným způsobem lze informovat o souvisejících prvcích na poskytované stránce, které mohou být přednačteny (například mohou být uvedeny odkazy na použité css a javascript na stránce). Poté, co prohlížeč obdrží informace o těchto prostředcích, začne je stahovat, aniž by čekal na dokončení dodání hlavní stránky, což může zkrátit celkový čas zpracování požadavku.
- Byly přidány direktivy add_header_inherit a add_trailer_inherit, které umožňují změnit pravidla pro dědění hodnot z direktiv add_header a add_trailer. Parametr „off“ zruší dědění hodnot, zatímco parametr „merge“ zahrnuje přidání hodnot z předchozí úrovně k hodnotám na aktuální úrovni.
- Do implementace protokolu QUIC byla přidána podpora režimu 0-RTT, dostupného na systémech s OpenSSL 3.5.1 a novějšími verzemi. TLS certifikátů.
- Byla přidána direktiva max_headers, která omezuje maximální počet HTTP hlaviček v požadavku. Při překročení limitu se vrací chyba 400 (Bad Request). Funkce byla přenesena z FreeNginx.
- Byly přidány proměnné $request_port a $is_request_port. První proměnná obsahuje číslo portu z komponenty URI nebo z hlavičky „Host“, zatímco druhá obsahuje „:“, pokud proměnná $request_port není prázdná.
- Byly přidány proměnné $ssl_sigalg a $ssl_client_sigalg, které obsahují název algoritmu pro generování digitálního podpisu pro TLS spojení.
- Do direktivy „geo“ byl přidán parametr „volatile“, který zakazuje ukládání proměnné do cache. Je povoleno používat masky v direktivě „include“, která je uvedena uvnitř bloku „geo“.
- V bloku „upstream“ je ve výchozím nastavení aktivována direktiva „keepalive“. Do direktivy „keepalive“ v bloku „upstream“ byl přidán parametr „local“. Při určení tohoto parametru se namísto sdílení jednoho spojení k společnému upstream serveru zmiňovanému v různých blocích location a server udržuje pro každý blok samostatné spojení k upstream.
- Při použití v režimu proxy je ve výchozím nastavení nastavena verze protokolu HTTP/1.1 s povolením režimu keep-alive (v modulu ngx_http_proxy_module je ve výchozím nastavení povolena podpora keep-alive a v direktivě „proxy_http_version“ je nastavena hodnota „1.1“ a zasílání výchozího hlavičky „Connection“ bylo zastaveno).
- Do modulu ngx_http_proxy byla přidána podpora protokolu HTTP/2, což umožňuje používat HTTP/2 při přístupu k backendům.
- Byla poskytnuta možnost načítání kryptografických klíčů z hardwarových tokenů s využitím knihovny OpenSSL jako poskytovatele.
- Byla odstraněna chyba, která vedla k buferování HTTP odpovědi 103 při použití HTTP/2 a direktivy 'early_hints'.
- Byla přidána možnost sestavení s kryptografickou knihovnou AWS-LC, kterou vyvíjí společnost Amazon.
- Byla přidána direktiva 'ssl_certificate_compression' pro řízení komprese.
- Byla zajištěna kompatibilita s knihovnou OpenSSL 4.0.
Dále lze zmínit publikaci verze projektu FreeNginx 1.30.0, který vyvíjí fork Nginx. Vývoj fork vede Maxim Dunin, jeden z klíčových vývojářů Nginx. FreeNginx je prezentován jako neziskový projekt, který zajišťuje vývoj kódové základny Nginx bez firemního zasahování. Kód FreeNginx je i nadále distribuován pod licencí BSD. Mezi změnami ve větvi FreeNginx 1.30: byla přidána podpora pro TLS rozšíření ECH (Encrypted Client Hello); byla vylepšena zpracování direktivy limit_rate; byly přidány direktivy send_min_rate a client_body_min_rate; byla realizována možnost omezení počtu spojení a intenzity požadavků v poštovním proxy; byla přidána podpora databází GeoIP2 v modulu GeoIP; byla posílena ochrana modulu XSLT.
Zdroj: opennet.ru
