Efter ett Ärs utveckling har den nya stabila versionen av den högpresterande HTTP-servern och flerprotokollproxy-servern nginx 1.28.0 publicerats, som har samlat förÀndringar som samlats i huvudversionen 1.27.x. I framtiden kommer alla Àndringar i den stabila versionen 1.28 att handla om att ÄtgÀrda allvarliga fel och sÄrbarheter. Snart kommer huvudversionen nginx 1.29 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 tredjepartsmoduler rekommenderas det att anvÀnda huvudversionen, pÄ grundval av vilken kommersiella produkter som Nginx Plus publiceras var tredje mÄnad.
Enligt marsrapporten frĂ„n företaget Netcraft körs cirka 245 miljoner webbplatser med nginx (för ett Ă„r sedan 243 miljoner, för tvĂ„ Ă„r sedan 289 miljoner). Nginx anvĂ€nds pĂ„ 17,89 % av alla aktiva webbplatser (för ett Ă„r sedan 18,15 %, för tvĂ„ Ă„r sedan 18,94 %), vilket motsvarar första plats i popularitet inom denna kategori (andelen Apache motsvarar 16,03 % (för ett Ă„r sedan 20,09 %, för tvĂ„ Ă„r sedan 20,52 %), Cloudflare â 17,81 % (14,12 %, 11,32 %), Google â 9,89 % (10,41 %, 9,89 %).
NĂ€r man ser pĂ„ alla webbplatser behĂ„ller nginx ledarskapet och har en marknadsandel pĂ„ 20,48 % (för ett Ă„r sedan 22,31 %, för tvĂ„ Ă„r sedan â 25,94 %), medan andelen Apache motsvarar 16,03 % (20,17 %, 20,58 %), Cloudflare â 12,87 % (11,24 %, 10,17 %), OpenResty (plattform baserad pĂ„ nginx och LuaJIT) â 9,36 % (7,93 %, 7,94 %).
Bland de en miljon mest besökta webbplatserna i vĂ€rlden har nginx andra plats med en andel pĂ„ 20,37 % (för ett Ă„r sedan 20,63 %, för tvĂ„ Ă„r sedan 21,37 %). Första platsen hĂ„lls av Cloudflare â 22,32 % (för ett Ă„r sedan 22,59 %, för tvĂ„ Ă„r sedan 21,62 %). Andelen Apache httpd â 17,95 % (20,09 %, 21,18 %).
Enligt W3Techs anvÀnds nginx pÄ 33,8 % av webbplatserna bland de en miljon mest besökta (i april förra Äret var denna siffra 34,3 %, Äret innan 34,5 %). Andelen Apache har under Äret minskat frÄn 30,1 % till 26,3 %, medan andelen Microsoft IIS har minskat frÄn 5 % till 4 %. Andelen Node.js har ökat frÄn 3,2 % till 4,4 %, och andelen LiteSpeed frÄn 12,9 % till 14,6 %.
De mest mÀrkbara förbÀttringarna som lagts till under skapandet av huvudversionen 1.27.x:
- För anslutningar som anvÀnder QUIC-protokollet har stöd för algoritmen CUBIC (RFC 9438) för hantering av nÀtverksöverbelastning lagts till. Denna algoritm ökar successivt storleken pÄ överbelastningsfönstret tills paketförlust intrÀffar, varefter fönsterstorleken ÄterstÀlls till vÀrdet före förlusten. I genomförda tester minskade anvÀndningen av CUBIC överföringstiden för en fil pÄ 500 MB med 24% vid fördröjningar pÄ 40 ms och BDP 750K (Bandwidth Delay Product) och med 73% vid fördröjningar pÄ 100 ms och BDP 9M.
- I stream-modulen har stöd för kontroll av kunders certifikatÄterkallande lagts till, med anvÀndning av OCSP-protokollet (Online Certificate Status Protocol).
- I stream-modulen har stöd för OCSP Stapling implementerats, vilket innebÀr att ett certifikatÄterkallande svar som har godkÀnts av en certifieringsmyndighet skickas av servern som hanterar webbplatsen utan att direkt kontakta certifieringsmyndigheten vid etablering av TLS-anslutningen.
- Vid start och uppdatering av konfigurationen har caching implementerats. SSL-certifikat, av nycklar och CRL (Certificate Revocation List).
- Möjligheter har lagts till för att minska resursförbrukningen och belastningen pÄ CPU:n vid anvÀndning av TLS i konfigurationer med ett stort antal block av server och plats. De tillagda förÀndringarna gör det möjligt att i stÀllet för att skapa en separat SSL-kontakt (SSL_CTX i OpenSSL) för varje konfigurationsblock anvÀnda den redan befintliga SSL-kontakten frÄn förÀldern.
- I direktivet "ssl_client_certificate" har stöd för certifikat med tillÀggsinformation sÀkerstÀllts.
- För kontroll av klientens SSL-certifikat Àr direktivet "ssl_client_certificate" numera inte obligatoriskt.
- I ngx_mail_proxy_module har stöd för det specifika för SmarterMail-modet IMAP LOGIN med ett icke-taggat CAPABILITY-svar lagts till.
- I ngx_http_proxy_module har direktivet "proxy_pass_trailers" lagts till, vilket tillÄter överföring av huvudfÀlt i slutet av svaret frÄn den proxyserver som hanterar klienten.
- I direktivet "server", som anvÀnds i blocket "upstream", har stöd för parametern "resolve" lagts till, vilket gör det möjligt att spÄra förÀndringar. IP-adresser för det anvÀnda domÀnnamnet och automatiskt uppdatera konfigurationen av "upstream"-blocket utan att behöva starta om nginx vid adresÀndringar.
- Det har lagts till möjlighet att anvÀnda variabler i direktiven "proxy_limit_rate", "fastcgi_limit_rate", "scgi_limit_rate" och "uwsgi_limit_rate".
- I direktiven "proxy_bind", "fastcgi_bind", "grpc_bind", "memcached_bind", "scgi_bind" och "uwsgi_bind", samt som klientadress i modulen ngx_http_realip_module, Àr det tillÄtet att ange IPv6-adresser i hakparenteser utan portnummer.
- Direktivet "keepalive_min_timeout" har lagts till, vilket definierar timeouten under vilken nginx inte kommer att stÀnga keep-alive-anslutningen med klienten.
- Protokollen TLSv1 och TLSv1.1 Àr som standard inaktiverade.
- Problem med lÄngsam laddning av konfigurationsfiler pÄ grund av omparsing av samma uppsÀttning TLS-certifikat, nycklar och certifikatlistor har ÄtgÀrdats. à terladdning av konfigurationen har snabbats upp genom att ÄteranvÀnda oförÀndrade TLS-objekt, sÄsom certifikat, nycklar och CRL. För att inaktivera arv av objekt vid uppdatering av konfiguration har direktivet "ssl_object_cache_inheritable" lagts till.
- En cache för certifikat och nycklar som laddas med hjÀlp av variabler i direktiven (t.ex. "ssl_certificate /etc/ssl/$ssl_server_name.crt") har lagts till. För att hantera cachen har direktiven "ssl_certificate_cache", "proxy_ssl_certificate_cache", "grpc_ssl_certificate_cache" och "uwsgi_ssl_certificate_cache" lagts till. Genom de angivna direktiven kan du konfigurera maximal cachestorlek, giltighetstid för poster och tid för rensning av oanvÀnda poster. Till exempel: "ssl_certificate_cache max=1000 inactive=20s valid=1m;".
- MinnesanvÀndningen har minskats vid hantering av lÄngvariga begÀrningar i konfigurationer dÀr direktiven "gzip", "gunzip", "ssi", "sub_filter" eller "grpc_pass" anvÀnds.
- Den maximala storleken för hÀmtade SSL-sessioner i delat minne har ökat till 8192.
- Byggsystemet med C-biblioteket Musl har förbÀttrats.
- Arbete har utförts för att optimera prestanda och ÄtgÀrda buggar i implementeringen av HTTP/3.
Uppkomsten av frislÀppandet av projektet FreeNginx 1.28.0, en fortsÀttning pÄ Nginx, kan ocksÄ nÀmnas. Utvecklingen av forken leds av Maxim Dunin, en av nyckelutvecklarna för Nginx. FreeNginx positioneras som ett ideellt projekt som sÀkerstÀller utvecklingen av Nginx:s kodbas utan företagsinblandning. Bland de specifika Àndringarna i FreeNginx 1.28:
- Parametern "off" i direktivet "pid" som inaktiverar skapandet av PID-filen.
- BegrÀnsning av intensiteten för loggning av felmeddelanden för att skydda mot att loggen fylls med typiska meddelanden.
- Implementeringen av parametern multipath i direktivet listen för att stödja Multipath TCP.
- Stöd för HTTP-headern "Age" för att bestÀmma livslÀngden för cache-poster.
- TillÀgg av autentiseringsmetoderna XOAUTH2 och OAUTHBEARER i mail_proxy-modulen.
KĂ€lla: opennet.ru
