A fejlesztés egy éve után megjelent a stabil 1.30.0-ás verzió, amely egy nagy teljesítményű HTTP-szerver és egy többprotokollos proxyserver nginx új ága. Ez a verzió tartalmazza a 1.29.x fő ágon felhalmozott változtatásokat. A jövőbeni frissítések a 1.30-as stabil ágon komoly hibák és sebezhetőségek javítására összpontosítanak. Hamarosan létrejön a fő ág nginx 1.31 néven, ahol új lehetőségek fejlesztése folyik majd. Az átlagos felhasználóknak, akiknek nincs szükségük harmadik féltől származó modulok támogatására, ajánlott a fő ágat használni, melyre három havonta kiadásra kerül az Nginx Plus kereskedelmi termék. Az nginx kódja C nyelven készült, és BSD licenc alatt terjesztik.
A Netcraft februári jelentése szerint körülbelül 321 millió webhely működik nginx használatával (egy évvel ezelőtt 245 millió, két évvel ezelőtt 243 millió, három évvel ezelőtt 289 millió). Az nginx az összes aktív weboldal 16.08%-án található (egy évvel ezelőtt 17.89%, két évvel ezelőtt 18.15%, három évvel ezelőtt 18.94%), ami a második legnépszerűbb helyet jelenti ebben a kategóriában (az Apache részesedése 13.27% (egy évvel ezelőtt 16.03%, két évvel ezelőtt 20.09%, három évvel ezelőtt 20.52%), a Cloudflare 20.62%-on áll (17.81%, 14.12%, 11.32%), a Google részesedése pedig 10.65% (9.89%, 10.41%, 9.89%).
Összességében a weboldalak tekintetében az nginx továbbra is vezető szerepet tölt be, részesedése 22.65% a piacon (egy évvel ezelőtt 20.48%, két évvel ezelőtt 22.31%, három évvel ezelőtt 25.94%), míg az Apache részesedése 12.19% (16.03%, 20.17%, 20.58%), a Cloudflare 15.27% (12.87%, 11.24%, 10.17%), az OpenResty (nginx és LuaJIT alapú platform) 8.01% (9.36%, 7.93%, 7.94%).
A világ leglátogatottabb egy millió webhelye között az nginx a második helyen áll 19.85%-os részesedéssel (tavaly 20.37%, két éve 20.63%, három éve 21.37%). Az első helyet a Cloudflare foglalja el 26.84%-kal (22.32%, 22.59%, 21.62%). Az Apache httpd részesedése 15.84% (17.95%, 20.09%, 21.18%). 
A W3Techs adatai szerint az nginx a leglátogatottabb webhelyek 32.8%-án található (tavaly áprilisban ez az arány 33.8% volt, két évvel ezelőtt pedig 34.3%). Az Apache részesedése egy év alatt 26.3%-ról 23.9%-ra csökkent, a Microsoft IIS részesedése 4%-ról 3.4%-ra, míg a Caddy részesedése 0.3%-ról 0.2%-ra esett. A Node.js részesedése 4.4%-ról 6.0%-ra nőtt, míg a LiteSpeed 14.6%-ról 15.2%-ra emelkedett.
A legszembetűnőbb fejlesztések, amelyek a fő ág 1.29.x kialakítása során kerültek hozzáadásra:
- Hozzáadtuk a TLS ECH (Encrypted ClientHello) kiterjesztés támogatását, amely az ESNI (Encrypted Server Name Indication) kiterjesztés továbbfejlesztése, és amelyet a TLS munkamenetek paramétereivel kapcsolatos információk titkosítására használnak, mint például a kért domain név. Az ECH és az ESNI közötti kulcsfontosságú különbség, hogy az ECH-ben a ClientHello teljes TLS üzenete titkosítva van, nem csak egyes mezők szintjén, lehetővé téve az ESNI-n keresztül nem védett mezők, például a PSK (Pre-Shared Key) adatainak szivárgásának blokkolását. Az ECH használatát az ssl_ech_file direktívába PEM formátumú ECHConfig fájl megadásával lehet aktiválni. Támogatás elérhető ECH-val készült OpenSSL verziók használatakor.
- Hozzáadtuk a Multipath TCP (MPTCP) protokoll támogatását, amely lehetővé teszi csomagok egyidejű kézbesítését több útvonalon, különböző hálózati interfészeken keresztül. Az aktiváláshoz a listen direktívához egy multipath paraméter került hozzáadásra.
- Hozzáadtuk a kliens munkamenetek egy csoporthoz tartozó azonos szerverekhez kötésének lehetőségét. Három módszer érhető el: cookie – az információk átadása a kiválasztott cookie-n keresztül; route – a proxy szerver a kliens első kérésének megérkezésekor útvonalat rendel a klienshez; learn – az nginx elemzi az upstream szerverből érkező válaszokat, és emlékezik a szerver által kezdeményezett munkamenetekre. A kötések beállításához az http modul upstream blokkjához sticky direktíva került hozzáadásra, míg a server direktívához a route és drain paramétereket adtuk hozzá. szerveren Hozzáadtuk az early_hints direktívát, és megvalósítottuk a 103 HTTP státuszkód támogatását a proxy és gRPC backend válaszokban. A 103 kód lehetővé teszi, hogy a kliens információt kapjon egyes HTTP fejléc tartalmáról közvetlenül a kérés után, anélkül, hogy meg kellene várnia, amíg a szerver elvégzi a kéréshez kapcsolódó összes műveletet és elkezdi a tartalom átadását. Így nyújthatók tippek a megjelenített oldalhoz kapcsolódó elemekről, amelyeket előre lehet tölteni (például a használt css és javascript fájlokra mutató linkeket lehet ajánlani). Miután a böngésző megkapta ezeket az információkat, elkezdi az erőforrások letöltését, anélkül, hogy meg kellene várnia a fő oldal átadásának befejezését, ami csökkenti a kérés teljes feldolgozási idejét.
- Hozzáadtuk az early_hints direktívát, és megvalósítottuk a 103 HTTP státuszkód támogatását a proxy és gRPC backend válaszokban. A 103 kód lehetővé teszi, hogy a kliens információt kapjon egyes HTTP fejléc tartalmáról közvetlenül a kérés után, anélkül, hogy meg kellene várnia, amíg a szerver elvégzi a kéréshez kapcsolódó összes műveletet és elkezdi a tartalom átadását. Így nyújthatók tippek a megjelenített oldalhoz kapcsolódó elemekről, amelyeket előre lehet tölteni (például a használt css és javascript fájlokra mutató linkeket lehet ajánlani). Miután a böngésző megkapta ezeket az információkat, elkezdi az erőforrások letöltését, anélkül, hogy meg kellene várnia a fő oldal átadásának befejezését, ami csökkenti a kérés teljes feldolgozási idejét.
- Hozzáadtuk az add_header_inherit és add_trailer_inherit direktívákat, amelyek lehetővé teszik az add_header és add_trailer direktívákban megadott értékek öröklési szabályainak megváltoztatását. Az „off” paraméter megszünteti az értékek öröklését, míg a „merge” paraméter a szülő szint értékeinek hozzáadását teszi lehetővé a jelenlegi szinten meglévő értékekhez.
- Hozzáadva az «ssl_certificate_compression» direktíva az összenyomás kezelésére. TLS-tanúsítványok.
- Hozzáadtuk a max_headers direktívát, amely korlátozza a kérésben lévő HTTP-headers maximális számát. A korlát túllépése esetén 400-as (Bad Request) hibát ad vissza. Ez a lehetőség a FreeNginx-ból került át.
- Hozzáadtuk a $request_port és $is_request_port változókat. Az első változó tartalmazza a port számát az URI komponensből vagy a „Host” fejlécből, a második pedig a „:”-t, ha a $request_port változó nem üres.
- Hozzáadtuk az $ssl_sigalg és $ssl_client_sigalg változókat, amelyek a TLS-kapcsolat digitális aláírásának generálásához használt algoritmus nevét tartalmazzák.
- A «geo» direktívához hozzáadva a «volatile» paraméter, amely letiltja a változó gyorsítótárazását. Megengedett maszkok használata a «include» direktívában, amely a «geo» blokkban van megadva.
- Az «upstream» blokkban alapértelmezetten aktiválva lett a «keepalive» direktíva. A «keepalive» direktívához, amelyet az «upstream» blokkban használnak, hozzáadva a «local» paraméter. Ennek a paraméternek a megadásakor nem egy kapcsolatot osztanak meg a különböző location és server blokkokban említett közös upstream-szerverhez, hanem minden blokk számára külön kapcsolatot tartanak fenn az upstream-hez.
- Proxy módban történő használat esetén alapértelmezés szerint HTTP/1.1 protokollverzió van beállítva keep-alive móddal (az ngx_http_proxy_module modulban alapértelmezés szerint engedélyezve van a keep-alive támogatás, és a «proxy_http_version» direktívában az érték «1.1» beállítva, valamint a «Connection» fejléc alapértelmezés szerint leállítva).
- Az ngx_http_proxy modulhoz hozzáadva a HTTP/2 protokoll támogatása, amely lehetővé teszi a HTTP/2 használatát a backendekkel való kommunikáció során.
- Lehetőség nyílt a kriptográfiai kulcsok hardvertokenekből való betöltésére az OpenSSL könyvtár használatával mint szolgáltatóval.
- A QUIC protokoll megvalósításába hozzáadva a 0-RTT üzemmód támogatása, amely elérhető az OpenSSL 3.5.1 és újabb rendszereken.
- Lehetőség van az Amazon által fejlesztett AWS-LC kriptográfiai könyvtárral való fordításra.
- Alapértelmezés szerint a TLSv1.3 tanúsítványok tömörítése le van tiltva.
- Biztosítva van a kompatibilitás az OpenSSL 4.0 könyvtárral.
További megjegyzésként említhetjük a FreeNginx 1.30.0 projekt kiadását, amely az Nginx forkjának fejlesztését célozza. A fork fejlesztését Maxim Dunin vezeti, aki az Nginx egyik kulcsfontosságú fejlesztője. A FreeNginx nem nyereségorientált projektté pozicionálja magát, amely biztosítja az Nginx kódalap fejlesztését vállalati beavatkozás nélkül. A FreeNginx kódja továbbra is BSD licenc alatt érhető el. A FreeNginx 1.30 ágában a következő változások történtek: ECH (Encrypted Client Hello) TLS kiterjesztés támogatása; a limit_rate utasítás feldolgozásának javítása; send_min_rate és client_body_min_rate utasítások hozzáadása; a csatlakozások és a kérések intenzitásának korlátozásának lehetősége a levélproxyban; GeoIP2 adatbázis támogatás a GeoIP modulban; az XSLT modul védelmének megerősítése.
Forrás: opennet.ru
