Po roku vývoja bola uvedená nová stabilná verzia vysokovýkonného HTTP servera a viacprotokolového proxy servera nginx 1.28.0, ktorá obsahuje zmeny zo stabilnej verzie 1.27.x. V budúcnosti budú všetky zmeny v stabilnej verzii 1.28 zamerané na opravu vážnych chýb a zraniteľností. Čoskoro bude vytvorená hlavná verzia nginx 1.29, v ktorej sa budú pokračovať v rozvoji nových funkcií. Pre bežných používateľov, ktorí nemajú za cieľ zabezpečiť kompatibilitu s externými modulmi, sa odporúča používať hlavnú vetvu, na základe ktorej sa každé tri mesiace vytvárajú vydania komerčného produktu Nginx Plus.
Podľa marcovej správy spoločnosti Netcraft sa približne 245 miliónov webových stránok prevádzkuje na nginx (pred rokom 243 miliónov, pred dvoma rokmi 289 miliónov). Nginx sa používa na 17,89 % všetkých aktívnych webových stránok (pred rokom 18,15 %, pred dvoma rokmi 18,94 %), čo zodpovedá prvému miestu v tejto kategórii (podiel Apache je 16,03 % (pred rokom 20,09 %, pred dvoma rokmi 20,52 %), Cloudflare – 17,81 % (14,12 %, 11,32 %), Google – 9,89 % (10,41 %, 9,89 %).
Pri zohľadnení všetkých webových stránok nginx naďalej vedie a má podiel 20,48 % na trhu (pred rokom 22,31 %, pred dvoma rokmi 25,94 %), pričom podiel Apache je 16,03 % (20,17 %, 20,58 %), Cloudflare – 12,87 % (11,24 %, 10,17 %), OpenResty (platforma založená na nginx a LuaJIT) – 9,36 % (7,93 %, 7,94 %).
Medzi miliónom najnavštevovanejších stránok na svete má nginx druhé miesto s podielom 20,37 % (pred rokom 20,63 %, pred dvoma rokmi 21,37 %). Prvé miesto patrí Cloudflare – 22,32 % (pred rokom 22,59 %, pred dvoma rokmi 21,62 %). Podiel Apache httpd je 17,95 % (20,09 %, 21,18 %).
Podľa údajov W3Techs sa nginx používa na 33,8 % webových stránok z milióna najnavštevovanejších (v apríli minulého roka to bolo 34,3 %, pred rokom 34,5 %). Podiel Apache za rok klesol z 30,1 % na 26,3 %, zatiaľ čo podiel Microsoft IIS klesol z 5 % na 4 %. Podiel Node.js vzrástol z 3,2 % na 4,4 %, a podiel LiteSpeed vzrástol z 12,9 % na 14,6 %.
Najpozoruhodnejšie vylepšenia pridané v procese tvorby hlavnej verzie 1.27.x:
- Pre pripojenia používajúce protokol QUIC bola pridaná podpora algoritmu riadenia sieťovej preťaženosti CUBIC (RFC 9438), ktorého fungovanie spočíva v postupnom zvyšovaní veľkosti okna preťaženia až do výskytu straty paketov, po čom sa veľkosť okna vráti na hodnotu pred stratou. V uskutočnených testoch použitie CUBIC umožnilo skrátiť čas prenosu súboru s veľkosťou 500 MB o 24 % pri latenciách 40 ms a BDP 750 K (Bandwidth Delay Product) a o 73 % pri latenciách 100 ms a BDP 9 M.
- Do modulu stream bola pridaná podpora kontroly odvolania certifikátov klientov pomocou protokolu OCSP (Protokol pre online status certifikátov).
- V module stream bola implementovaná podpora techniky kontrolovania odvolania certifikátov OCSP Stapling, ktorou je, že pri rokovaní o TLS spojení sa certifikované odpovede OCSP odovzdávajú serverom, ktorý obsluhuje webovú stránku, bez potreby priameho kontaktu s certifikačným orgánom.
- Pri spustení a aktualizácii konfigurácie bolo implementované cacheovanie SSL certifikátov, kľúčov a CRL (Zoznam odvolaných certifikátov).
- Boli pridané možnosti na zníženie spotreby zdrojov a zníženie záťaže na CPU pri používaní TLS v konfiguráciách s veľkým počtom blokov servera a lokácie. Pridané zmeny umožňujú namiesto vytvárania osobného SSL kontextu (SSL_CTX v OpenSSL) pre každý konfiguračný blok, využiť už existujúci SSL kontext z nadriadeného bloku.
- V direktíve „ssl_client_certificate“ bola zabezpečená podpora certifikátov s dodatočnými informáciami.
- Pre kontrolu klientskych SSL certifikátov nie je direktíva „ssl_client_certificate“ už povinná.
- Modul ngx_mail_proxy_module pridáva podporu režimu IMAP LOGIN špecifického pre SmarterMail s nietegovanou odpoveďou CAPABILITY.
- Do modulu ngx_http_proxy_module bola pridaná direktíva „proxy_pass_trailers“, ktorá umožňuje prenášať polia hlavičiek na konci odpovede od proxy servera k klientovi.
- Do direktívy 'server', použitanej v bloku 'upstream', bola pridaná podpora parametra 'resolve', ktorý zahŕňa sledovanie zmeny IP adresy pre používané doménové meno a automatické aktualizovanie konfigurácie bloku 'upstream' bez nutnosti reštartovania nginx v prípade zmeny adresy.
- Bola pridaná možnosť používania premenných v direktívach 'proxy_limit_rate', 'fastcgi_limit_rate', 'scgi_limit_rate' a 'uwsgi_limit_rate'.
- V direktívach 'proxy_bind', 'fastcgi_bind', 'grpc_bind', 'memcached_bind', 'scgi_bind' a 'uwsgi_bind', ako aj v adrese klienta v module ngx_http_realip_module, je povolené uvádzanie IPv6 adries v hranatých zátvorkách bez čísla portu.
- Pridaná direktíva „keepalive_min_timeout“, ktorá určuje časový limit, počas ktorého nginx nebude uzatvárať keep-alive spojenie s klientom.
- Predvolene sú protokoly TLSv1 a TLSv1.1 vypnuté.
- Riešené problémy s dlhým načítavaním konfiguračných súborov spôsobené opakovaným rozparsovaním rovnakého súboru TLS certifikátov, kľúčov a zoznamov overovacích autorít. Zrýchlené reštartovanie konfigurácie vďaka opätovnému používaniu nemenných TLS objektov, ako sú certifikáty, kľúče a CRL. Na zakázanie dedičstva objektov pri aktualizácii konfigurácie bola pridaná direktíva 'ssl_object_cache_inheritable'.
- Pridaný cache pre certifikáty a kľúče načítané pomocou premenných v direktívach (napríklad „ssl_certificate /etc/ssl/$ssl_server_name.crt“). Na správu cache boli pridané direktívy „ssl_certificate_cache“, „proxy_ssl_certificate_cache“, „grpc_ssl_certificate_cache“ a „uwsgi_ssl_certificate_cache“. Cez uvedené direktívy je možné nastaviť maximálnu veľkosť cache, čas platnosti záznamov a čas vymazania nepoužívaných záznamov. Napríklad: „ssl_certificate_cache max=1000 inactive=20s valid=1m;“.
- Znížená spotreba pamäte pri spracovaní dlhodobých požiadaviek v konfiguráciách, v ktorých sú použité direktívy 'gzip', 'gunzip', 'ssi', 'sub_filter' alebo 'grpc_pass'.
- Maximálna veľkosť cache ukladanej v zdieľanej pamäti pre SSL relácie bola zvýšená na 8192.
- Bola zavedená podpora pre zostavovanie so C knižnicou Musl.
- Bola vykonaná optimalizácia výkonu a odstránenie chýb v implementácii HTTP/3.
Dodatočne môžeme spomenúť vydanie verzie projektu FreeNginx 1.28.0, ktorý je vyvíjaný ako fork Nginx. Vývoj fork vedie Maxim Dunin, jeden z kľúčových vývojárov Nginx. FreeNginx je prezentovaný ako neziskový projekt, ktorý zabezpečuje vývoj kódovej základne Nginx bez firemného zasahovania. Medzi špecifické zmeny v rámci verzie FreeNginx 1.28 patrí:
- Parameter 'off' v direktíve 'pid', ktorý vypína vytváranie PID súboru.
- Obmedzenie intenzity zápisu správ do chybového logu na ochranu pred zaplnením logu typovými správami.
- Implementácia parametra multipath v direktíve listen na podporu Multipath TCP.
- Podpora HTTP hlavičky 'Age' na určenie trvania platnosti záznamov v cache.
- Pridanie metód autentifikácie XOAUTH2 a OAUTHBEARER do modulu mail_proxy.
Zdroj: opennet.ru
