Pärast aasta arengut on avaldatud uus stabiilne versioon kõrge jõudlusega HTTP-serverist ja mitme protokolli vahendist nginx 1.28.0, mis hõlmab kõiki põhikoode 1.27.x versioonis kogunenud muudatusi. Edaspidi seondub kõik stabiilses versioonis 1.28 tõsiste vigu ja turvaauke puudutavate muudatustega. Varsti luuakse põhikoode nginx 1.29, kus jätkub uute funktsioonide arendamine. Tavalistele kasutajatele, kellel pole vajadust tagada ühilduvust kolmandate osapoolte moodulitega, soovitatakse kasutada põhikoode, mille alusel koostatakse iga kolme kuu tagant kaubandusliku toote Nginx Plus versioonid.
Märtsi aruanne ettevõttelt Netcraft näitab, et nginxiga töötab umbes 245 miljonit veebisaiti (aasta tagasi 243 miljonit, kaks aastat tagasi 289 miljonit). Nginx kasutatakse 17,89% kõigist aktiivsetest veebisaitidest (aasta tagasi 18,15%, kaks aastat tagasi 18,94%), mis vastab selle kategooria populaarsuses esikohale (Apache osakaal on 16,03% (aasta tagasi 20,09%, kaks aastat tagasi 20,52%), Cloudflare — 17,81% (14,12%, 11,32%), Google — 9,89% (10,41%, 9,89%).
Vaatamata kõigile veebilehtedele hoiab nginx juhtpositsiooni, omades turuosa 20,48% (aasta tagasi 22,31%, kaks aastat tagasi — 25,94%), samas kui Apache osakaal on 16,03% (20,17%, 20,58%), Cloudflare — 12,87% (11,24%, 10,17%), OpenResty (nginx ja LuaJITil põhinev platvorm) — 9,36% (7,93%, 7,94%).
Maailma miljoni kõige külastatuma veebilehe seas asub nginx teisel kohal, omades osakaalu 20,37% (aasta tagasi 20,63%, kaks aastat tagasi 21,37%). Esikoha hoiab Cloudflare — 22,32% (aasta tagasi 22,59%, kaks aastat tagasi 21,62%). Apache httpd osakaal on 17,95% (20,09%, 21,18%).
W3Techsi andmetel kasutatakse nginxi 33,8%-l miljonist kõige külastatumast veebilehest (eelmisel aprillil oli see näitaja 34,3%, ülemöödunud aastal 34,5%). Apache osakaal on aasta jooksul langenud 30,1%-lt 26,3%-le, samas kui Microsoft IIS osakaal on langenud 5%-lt 4%-le. Node.js osakaal on suurenenud 3,2%-lt 4,4%-le ning LiteSpeed osakaal 12,9%-lt 14,6%-le.
Olulisemad täiustused, mis on lisatud põhiharude vormimise käigus versioonis 1.27.x:
- QUIC-protokolli kasutavatesse ühendustesse on lisatud CUBIC võrgu ülekoormuse juhtimise algoritmi tugi (RFC 9438), mille töö põhineb akna suuruse järkjärgulisel suurendamisel kuni pakettide kaotamiseni, pärast mida akna suurus vähendatakse algsele väärtusele enne kadumist. Tehtud testide käigus aitas CUBIC vähendada 500 MB faili edastusaega 24%, kui viivitus oli 40 ms ja BDP 750K (Bandwidth Delay Product), ning 73%, kui viivitus oli 100 ms ja BDP 9M.
- Modulisse stream on lisatud tugi klientide sertifikaatide tühistamise staatuse kontrollimiseks kasutades OCSP protokolli (Online Certificate Status Protocol).
- Stream moodulis on rakendatud OCSP Staplingi sertifikaatide tühistamise kontrolli tehnika, mille olemus seisneb selles, et TLS-ühenduse loomisel edastab saitide teenindava serveri poolt sertifitseerimisasutuse poolt kinnitatud OCSP vastuse ilma otsese pöördumiseta sertifitseerimisasutuse poole.
- Konfiguratsiooni käivitamisel ja värskendamisel on rakendatud vahemälu. SSL-sertifikaate, võtmete ja CRL-i (sertifikaadi tühistamise nimekiri).
- Lisatud on võimalused ressursikasutuse vähendamiseks ja CPU koormuse vähendamiseks TLS-i kasutamisel suure arvu serveri ja asukoha plokkidega konfiguratsioonides. Lisatud muudatused võimaldavad mitte luua iga konfiguratsiooni ploki jaoks eraldi SSL-i konteksti (SSL_CTX OpenSSLis), vaid kasutada juba olemasolevat SSL-i konteksti vanemast plokist.
- Direktiivis «ssl_client_certificate» on tagatud toetus sertifikaatidele, mis sisaldavad täiendavat teavet.
- Kliendi SSL-sertifikaatide kontrollimiseks ei ole direktiiv «ssl_client_certificate» enam kohustuslik.
- ngx_mail_proxy_module moodulisse on lisatud SmarterMailile spetsiifiline IMAP LOGIN režiimi tugi, millel on tähistamata CAPABILITY vastus.
- ngx_http_proxy_module moodulisse on lisatud direktiiv «proxy_pass_trailers», mis võimaldab edastada pealkirjade välju vastuse lõpus proksieeritud serverilt kliendile.
- Direktiivi «server», mida kasutatakse «upstream» plokkides, on lisatud parameter «resolve», mis hõlmab seadme muutuste jälgimist. IP-aadressid kasutatava domeeninime puhul ja võimaldab automaatset «upstream» ploki seadistuse uuendamist ilma nginx'i taaskäivitamiseta aadressi muutumisel.
- Lisatud on võimalus kasutada muutujaid direktiivides «proxy_limit_rate», «fastcgi_limit_rate», «scgi_limit_rate» ja «uwsgi_limit_rate».
- Direktiivides «proxy_bind», «fastcgi_bind», «grpc_bind», «memcached_bind», «scgi_bind» ja «uwsgi_bind», samuti kliendi aadressina ngx_http_realip_module moodulis on lubatud IPv6-aadresse näidata ruutkarkassides ilma sadama numbrita.
- Lisatud on direktiiv «keepalive_min_timeout», mis määratleb ajavahemiku, mille jooksul nginx ei sulge kliendiga keep-alive ühendust.
- Vaikimisi on protokollid TLSv1 ja TLSv1.1 keelatud.
- Lahendatud probleemid konfiguratsioonifailide pika laadimisega, mis on tingitud sama TLS-sertifikaatide, võtmete ja sertifitseerimiskeskuste loendi korduvast parsimist. Konfiguratsiooni taaskäivitamine on kiirem, kuna uuesti kasutatakse muutumatuid TLS-objekte, nagu sertifikaadid, võtmed ja CRL. Objektide pärimise keelamiseks konfiguratsiooni uuendamisel on lisatud direktiiv "ssl_object_cache_inheritable".
- Lisatud vahemälu sertifikaatide ja võtmete jaoks, mis on laaditud direktiivide muutujate abil (näiteks "ssl_certificate /etc/ssl/$ssl_server_name.crt"). Vahemälu haldamiseks on lisatud direktiivid "ssl_certificate_cache", "proxy_ssl_certificate_cache", "grpc_ssl_certificate_cache" ja "uwsgi_ssl_certificate_cache". Nende direktiivide kaudu saab seadistada vahemälu maksimaalse suuruse, salvestiste kehtivuse aja ja nõudmata salvestiste puhastamise aja. Näiteks: "ssl_certificate_cache max=1000 inactive=20s valid=1m;".
- Mälu tarbimist on vähendatud pikaajaliste päringute töötlemisel konfigureerimises, kus kasutatakse direktiive "gzip", "gunzip", "ssi", "sub_filter" või "grpc_pass".
- SSL-i jagatud mälus vahekaartide maksimaalne suurus on suurendatud 8192-ks.
- On loodud koostöö Musl C-raamatukoguga.
- Tehtud töö HTTP/3 jõudluse optimeerimiseks ja vigade kõrvaldamiseks.
Lisaks võib märkida, et on avaldatud FreeNginx projekti versioon 1.28.0, mis arendab Nginx forki. Forki arendab Maksim Dunin, üks Nginxi võtmearendajatest. FreeNginx positsioneeritakse mittetulunduslikuna, tagades Nginx koodibaasi arendamise ilma ettevõtte sekkumiseta. FreeNginx 1.28 spetsiifilised muudatused hõlmavad järgmist:
- Direktiivi «pid» parameeter «off», mis keelab PID-faili loomise.
- Veateadete logisse salvestamise intensiivsuse piiramine, et kaitsta logi tüüpveateadete poolt üleujutamise eest.
- Parameetri multipath rakendamine direktiivis listen, et toetada Multipath TCP-d.
- HTTP-pealkirja «Age» toetamine, et määrata vahemälu kirje eluea.
- XOAUTH2 ja OAUTHBEARER autentimismeetodite lisamine mail_proxy moodulisse.
Allikas: opennet.ru
