Efter ett Ärs utveckling har en ny stabil version av den högpresterande HTTP-servern och multiprotokollproxy-servern nginx 1.30.0 slÀppts, som har integrerat Àndringar frÄn huvudversionen 1.29.x. I framtiden kommer alla Àndringar i den stabila versionen 1.30 att handla om att ÄtgÀrda allvarliga fel och sÄrbarheter. Snart kommer huvudversionen nginx 1.31 att formas, dÀr utvecklingen av nya funktioner kommer att fortsÀtta. För vanliga anvÀndare, som inte behöver sÀkerstÀlla kompatibilitet med externa moduler, rekommenderas det att anvÀnda huvudversionen, baserat pÄ vilken kommersiella produkten Nginx Plus slÀpps var tredje mÄnad. Koden för nginx Àr skriven i C och distribueras under BSD-licens.
Enligt Netcrafts rapport för februari Ă€r omkring 321 miljoner webbplatser (245 miljoner för ett Ă„r sedan, 243 miljoner för tvĂ„ Ă„r sedan, 289 miljoner för tre Ă„r sedan) baserade pĂ„ nginx. Nginx anvĂ€nds pĂ„ 16,08 % av alla aktiva webbplatser (17,89 % för ett Ă„r sedan, 18,15 % för tvĂ„ Ă„r sedan, 18,94 % för tre Ă„r sedan), vilket motsvarar en andra plats i popularitet inom denna kategori (Andelen Apache Ă€r 13,27 % (16,03 % för ett Ă„r sedan, 20,09 % för tvĂ„ Ă„r sedan, 20,52 % för tre Ă„r sedan), Cloudflare â 20,62 % (17,81 %, 14,12 %, 11,32 %), Google â 10,65 % (9,89 %, 10,41 %, 9,89 %).
NĂ€r vi betraktar alla webbplatser kvarstĂ„r nginx som ledande och har 22,65 % av marknaden (20,48 % för ett Ă„r sedan, 22,31 % för tvĂ„ Ă„r sedan, 25,94 % för tre Ă„r sedan), medan andelen Apache Ă€r 12,19 % (16,03 %, 20,17 %, 20,58 %), Cloudflare â 15,27 % (12,87 %, 11,24 %, 10,17 %), OpenResty (plattform baserad pĂ„ nginx och LuaJIT) â 8,01 % (9,36 %, 7,93 %, 7,94 %).
Bland de en miljon mest besökta webbplatserna i vÀrlden har nginx en andel pÄ 19,85 % (20,37 % för ett Är sedan, 20,63 % för tvÄ Är sedan, 21,37 % för tre Är sedan), medan Cloudflare tar förstaplatsen med 26,84 % (22,32 %, 22,59 %, 21,62 %). Andelen Apache httpd ligger pÄ 15,84 % (17,95 %, 20,09 %, 21,18 %). 
Enligt W3Techs anvÀnds nginx pÄ 32,8 % av de mest besökta webbplatserna (i april förra Äret var det 33,8 %, Äret dessförinnan 34,3 %). Andelen Apache har minskat frÄn 26,3 % till 23,9 % under Äret, andelen Microsoft IIS har minskat frÄn 4 % till 3,4 %, och andelen Caddy har minskat frÄn 0,3 % till 0,2 %. Andelen Node.js har ökat frÄn 4,4 % till 6,0 %, och andelen LiteSpeed har ökat frÄn 14,6 % till 15,2 %.
De mest anmÀrkningsvÀrda förbÀttringarna som lades till under formandet av huvudversionen 1.29.x:
- Stöd för TLS-tillÀgget ECH (Encrypted ClientHello) har lagts till, vilket fortsÀtter utvecklingen av tillÀgget ESNI (Encrypted Server Name Indication) och anvÀnds för att kryptera information om TLS-sessionernas parametrar, sÄsom det begÀrda domÀnnamnet. Den viktigaste skillnaden mellan ECH och ESNI Àr att i ECH krypteras hela TLS-meddelandet ClientHello istÀllet för specifika fÀlt, vilket förhindrar lÀckage via fÀlt som inte omfattas av ESNI, till exempel PSK-fÀltet (Pre-Shared Key). AnvÀndning av ECH aktiveras genom att ange ECHConfig-filen i PEM-format i direktivet «ssl_ech_file». Stödet Àr tillgÀngligt för OpenSSL-versioner med ECH.
- Stödet för Multipath TCP (MPTCP) har lagts till, vilket möjliggör samtidig leverans av paket via flera vÀgar över olika nÀtverksgrÀnssnitt. Parametern "multipath" har lagts till i direktivet "listen" för att aktivera detta.
- Möjligheten att binda klientsessioner till samma servrar i en grupp har lagts till. Tre metoder finns tillgĂ€ngliga: "cookie" â överföring av information om den valda servern genom den angivna cookie; "route" â den proxyserver som tilldelar en rutt till klienten vid första förfrĂ„gan; "learn" â nginx analyserar svar frĂ„n upstream-servern och kommer ihĂ„g sessioner som startats av servern. För att konfigurera bindning har direktivet "sticky" lagts till blocket "upstream" i modulen "http", och parametrarna "route" och "drain" har lagts till i direktivet "server".
- Direktivet "early_hints" har lagts till och stöd för HTTP-koden 103 har implementerats i svar frÄn proxybackends och gRPC. Kod 103 gör det möjligt att informera klienten om innehÄllet i vissa HTTP-headerar omedelbart efter förfrÄgan, utan att vÀnta pÄ att servern ska utföra alla operationer som Àr relaterade till förfrÄgan och börja leverera innehÄllet. PÄ sÄ sÀtt kan tips om relaterade element pÄ den levererade sidan ges som kan laddas ner i förvÀg (till exempel kan lÀnkar till anvÀnda css- och javascript-filer anges). NÀr information om sÄdana resurser mottas börjar webblÀsaren ladda dem utan att vÀnta pÄ att huvudsidans leverans ska avslutas, vilket minskar den totala bearbetningstiden för förfrÄgan.
- Direktiven add_header_inherit och add_trailer_inherit har lagts till, vilket möjliggör förÀndringar av reglerna för arv av vÀrden som anges i direktiven add_header och add_trailer. Parametern "off" avbryter arvet av vÀrden, medan parametern "merge" inkluderar lÀggning av vÀrden frÄn föregÄende nivÄ till vÀrden pÄ den aktuella nivÄn.
- Direktivet "ssl_certificate_compression" har lagts till för att hantera komprimering. TLS-certifikat.
- Direktivet max_headers har lagts till, vilket begrÀnsar antalet maximala HTTP-headerar i en förfrÄgan. Om grÀnsen överskrids returneras fel 400 (Bad Request). Möjligheten har överförts frÄn FreeNginx.
- Variablerna $request_port och $is_request_port har lagts till. Den första variabeln innehÄller portnumret frÄn URI-komponenten eller frÄn "Host"-headern, och den andra innehÄller ":" om variabeln $request_port inte Àr tom.
- Variablerna $ssl_sigalg och $ssl_client_sigalg har lagts till, som innehÄller namnet pÄ algoritmen för digital signatur som anvÀnds för TLS-anslutningen.
- Direktivet «geo» har fÄtt parameter «volatile», som stÀnger av caching av variabler. Det Àr tillÄtet att anvÀnda masker i direktivet «include» som anges inom blocket «geo».
- I blocket «upstream» har direktivet «keepalive» aktiverats som standard. Parameter «local» har lagts till i direktivet «keepalive» som anvÀnds i blocket «upstream». NÀr denna parameter anges, stödjs ett separat samband till uppströmsservern för varje block snarare Àn att dela pÄ en enda anslutning som nÀmns i olika block location och server.
- Vid anvÀndning i proxy-lÀge Àr HTTP-protokollets version 1.1, med aktiverat keep-alive-lÀge, som standard. I modulen ngx_http_proxy_module Àr stöd för keep-alive aktiverat som standard och vÀrdet «1.1» Àr angivet i direktivet «proxy_http_version», och sÀndningen av standardhuvudet «Connection» har upphört.
- Modulen ngx_http_proxy har fÄtt stöd för protokollet HTTP/2, vilket möjliggör anvÀndning av HTTP/2 vid anrop till backend.
- Möjligheten att ladda upp kryptografiska nycklar frÄn hÄrdvarutoken har tillhandahÄllits, med OpenSSL-biblioteket som leverantör.
- Implementeringen av QUIC-protokollet har fÄtt stöd för 0-RTT-lÀget, tillgÀngligt pÄ system med OpenSSL 3.5.1 och nyare versioner.
- Möjlighet till byggnation med kryptografibiblioteket AWS-LC, som utvecklas av Amazon, har lagts till.
- Standardkomprimering av TLSv1.3-certifikat Àr inaktiverat.
- Kompatibilitet med biblioteket OpenSSL 4.0 har sÀkerstÀllts.
Dessutom kan man nÀmna publiceringen av release av projektet FreeNginx 1.30.0, utvecklingen av en fork av Nginx. Forken utvecklas av Maxim Dunin, en av de nyckelutvecklare som arbetar med Nginx. FreeNginx positioneras som ett icke-vinstdrivande projekt som sÀkerstÀller utvecklingen av kodbasen för Nginx utan företagsinblandning. Koden för FreeNginx fortsÀtter att distribueras under BSD-licensen. Bland Àndringarna i FreeNginx 1.30 finns: stöd för TLS-tillÀgget ECH (Encrypted Client Hello); förbÀttrad hantering av direktivet limit_rate; tillagda direktiv send_min_rate och client_body_min_rate; genomförd möjligheten att begrÀnsa antalet anslutningar och intensiteten av förfrÄgningar i e-postproxy; stöd för GeoIP2-databasen i GeoIP-modulen; förstÀrkt skydd av XSLT-modulen.
KĂ€lla: opennet.ru
