Efter ett Ärs utveckling har den nya stabila versionen av den högpresterande HTTP-servern och multiprotokollproxy-servern nginx 1.26.0 publicerats. Denna version inkluderar förÀndringar som har samlats i huvudversionen 1.25.x. Framtida Àndringar i den stabila versionen 1.26 kommer att fokusera pÄ att ÄtgÀrda allvarliga buggar och sÄrbarheter. Snart kommer den nya huvudversionen av nginx 1.27 att skapas, dÀr utvecklingen av nya funktioner kommer att fortsÀtta. För vanliga anvÀndare som inte behöver sÀkerstÀlla kompatibilitet med tredjepartsmoduler rekommenderas det att anvÀnda huvudversionen, som var tredje mÄnad ger ut nya releaser av den kommersiella produkten Nginx Plus.
Enligt Netcrafts marsrapport drivs cirka 243 miljoner webbplatser av nginx (för ett Ă„r sedan 289 miljoner). Nginx anvĂ€nds pĂ„ 18.15% av alla aktiva webbplatser (för ett Ă„r sedan 18.94%, för tvĂ„ Ă„r sedan 20.08%), vilket motsvarar andra plats i popularitet inom denna kategori (andelen för Apache Ă€r 20.09% (för ett Ă„r sedan 20.52, för tvĂ„ Ă„r sedan 22.58), Cloudflare â 14.12% (11.32%, 10.42%), Google â 10.41% (9.89%, 8.89%). NĂ€r man ser pĂ„ alla webbplatser behĂ„ller nginx sin ledning och har en marknadsandel pĂ„ 22.31% (för ett Ă„r sedan 25.94%, för tvĂ„ Ă„r sedan 31.13%), medan andelen för Apache Ă€r 20.17% (20.58, 23.08%), Cloudflare â 11.24% (10.17, 5.49%), OpenResty (plattform baserad pĂ„ nginx och LuaJIT) â 7.93% (7.94%, 8.01%).
Bland de en miljon mest besökta webbplatserna i vÀrlden utgör nginx 20,63% (för ett Är sedan 21,37%, för tvÄ Är sedan 21,79%), Cloudflare 22,59% (för ett Är sedan 21,62%), Apache httpd 20,09% (21,18%). Enligt W3Techs anvÀnds nginx pÄ 34,3% av de mest besökta webbplatserna, förra Äret var detta 34,5%, Äret innan dess 33,1%. Andelen Apache har minskat frÄn 32,2% till 30,1% under Äret, medan andelen Microsoft IIS har minskat frÄn 5,6% till 4,8%. Andelen Node.js har ökat frÄn 2,4% till 3,2%, och andelen LiteSpeed frÄn 11,8% till 12,9%.
De mest anmÀrkningsvÀrda förbÀttringarna som lagts till i processen för att skapa huvudversionen 1.25.x:
- Modulen ngx_http_v3 har lagts till med experimentellt stöd för protokollet HTTP/3. För att bygga modulen finns alternativet «âwith-http_v3_module». HTTP/3 definierar anvĂ€ndningen av protokollet QUIC (Quick UDP Internet Connections) som transport för HTTP/2. QUIC Ă€r en överbyggnad pĂ„ UDP-protokollet som stödjer multiplexering av flera anslutningar och erbjuder krypteringsmetoder som Ă€r jĂ€mförbara med TLS/SSL. Protokollet skapades 2013 av Google som ett alternativ till TCP+TLS för webben, för att lösa problem med lĂ„ng upprĂ€ttande och förhandling av anslutningar i TCP och eliminera fördröjningar vid paketförlust under datatransfer.
- En separat direktiv «http2» har lagts till för selektiv aktivering av HTTP/2-protokollet i serverbundlingar (kan anvÀndas i separata block «server»). Parametern «http2» i direktivet «listen» har avskrivits.
- Skyddet mot anomal aktivitet hos HTTP/2-klienter har förstÀrkts, sÀrskilt mot DoS-attacker av typen «Rapid Reset», dÀr ett stort antal strömmar snabbt resetteras inom en enda HTTP/2-anslutning. I standardkonfigurationen begrÀnsas sÄdana attacker av grÀnsen för antalet förfrÄgningar per anslutning «keepalive_requests» (efter varje 1000 förfrÄgningar kommer anslutningen att resetteras) och begrÀnsningarna «limit_req». För att möjliggöra snabbare respons pÄ översvÀmningsförfrÄgningar via ett stort antal strömmar har ett ytterligare grÀns lagts till, som i standardlÀge förhindrar skapandet av mer Àn 256 (2 * max_concurrent_streams) nya strömmar per hÀndelsebehandlingscykel. Den nya begrÀnsningen gör det möjligt att börja blockera förfrÄgningar innan det totala grÀnset för antalet samtidiga strömmar uppnÄs, till exempel nÀr strömmarna behandlas asynkront eller resetteras.
- Stödet för modulen stream har lagts till virtuella servrar, vars konfiguration definieras i blocket «server { ⊠}» med hjÀlp av direktivet server_name. server { server_name ~^(www\.)?(.+)$; proxy_pass www.$2:12345; }
- En ny modul ngx_stream_pass_module har lagts till, som Àr avsedd för att vidarebefordra mottagna anslutningar direkt till vilken lyssnande socket som helst kopplad till moduler som http, stream och mail. stream { server { listen 12345 ssl; ssl_certificate domain.crt; ssl_certificate_key domain.key; pass 127.0.0.1:8000; } }
- I direktivet listen i stream-modulen har stöd för parametrarna "deferred" (aktiverar fördröjd acceptans), "accept_filter" (filter för inkommande anslutningar som tillÀmpas före anropet av accept-funktionen) och "setfib" (instÀllning av routingtabell).
- För vissa arkitekturer har stöd för att bestÀmma blockstorlek (cache line) införts, som anvÀnds för dataöverföring mellan CPU-cache och minne.
- Hantera buffertarna som anvÀnds vid automatisk upptÀckte av HTTP/2-anslutningar har förbÀttrats.
- Prestandan vid uppstart av konfigurationer med ett stort antal "location"-direktiv har ökat.
- Stödet för Server push-teknologin i HTTP/2 har tagits bort.
- Stödet för direktivet "ssl", som tidigare har deklarerats som förÄldrat, har upphört.
Den stabila utgÄvan av projektet FreeNginx 1.26.0, en vidareutveckling av Nginx, publicerades för tvÄ veckor sedan. Forken utvecklas av Maxim Dunin, en av de nyckelutvecklare som arbetade med Nginx. FreeNginx positionerar sig som ett icke-komersiellt projekt som sÀkerstÀller utvecklingen av Nginx-kodbasen utan företagsinblandning.
KĂ€lla: opennet.ru
