Po 13 mesiacoch vývoja bola predstavená nová stabilná verzia vysoko výkonného HTTP servera a mult протokolového proxy servera nginx 1.22.0, ktorá zahŕňa zmeny nazbierané v hlavnej verzii 1.21.x. V budúcnosti budú všetky zmeny v stabilnej verzii 1.22 zamerané na odstránenie vážnych chýb a zraniteľností. Čoskoro bude vytvorená hlavná verzia nginx 1.23, kde bude pokračovať vývoj nových funkcií. Pre bežných používateľov, ktorí nemajú za cieľ zabezpečiť kompatibilitu so systémami tretích strán, sa odporúča používať hlavnú verziu, na ktorej sa každé tri mesiace vytvárajú vydania komerčného produktu Nginx Plus.
Podľa aprílového správy spoločnosti Netcraft sa nginx používa na 20,08% všetkých aktívnych webových stránok (pred rokom 20,15%, pred dvoma rokmi 19,56%), čo zodpovedá druhému miestu popularity v tejto kategórii (podiel Apache je 22,58% (pred rokom 25,38%), Cloudflare — 10,42% (8,51%), Google — 8,89% (10,09%). Pri zohľadnení všetkých stránok si nginx udržuje prvenstvo a zaujíma 31,13% trhu (pred rokom 35,34%, pred dvoma rokmi — 36,91%), zatiaľ čo podiel Apache je 23,08% (25,98%), OpenResty (platforma založená na nginx a LuaJIT) — 8,01% (6,55%), Cloudflare — 5,49%, Microsoft IIS — 4% (5,96%).
Medzi miliónom najnavštevovanejších stránok na svete je podiel nginx 21,79% (pred rokom 23,06%, pred dvoma rokmi 25,54%). V súčasnosti pod nginx funguje približne 361 milión webových stránok (pred rokom 419 miliónov). Podľa údajov W3Techs sa nginx používa na 33,5% zo milióna najnavštevovanejších webových stránok, minulý máj bol tento ukazovateľ 33,8%, predminulý 31,9%. Podiel Apache za rok klesol z 33,8% na 31,5%, zatiaľ čo podiel Microsoft IIS klesol z 7% na 6%. Podiel LiteSpeed vzrástol z 8,5% na 12,1%, a Node.js z 1,2% na 1,9%. V Rusku sa nginx používa na 79,8% najnavštevovanejších stránok (pred rokom — 79,1%).
Medzi najvýraznejšie vylepšenia, pridané počas vytvárania hlavnej verzie 1.21.x:
- V direktívach „proxy_ssl_certificate“, „proxy_ssl_certificate_key“, „grpc_ssl_certificate“, „grpc_ssl_certificate_key“, „uwsgi_ssl_certificate“ a „uwsgi_ssl_certificate_key“ bola pridaná podpora premenných.
- Do poštového proxy modulu bola pridaná podpora režimu „pipelining“ na prenos viacerých požiadaviek POP3 alebo IMAP v jednom spojení, a taktiež bola pridaná nová direktíva „max_errors“, ktorá určuje maximálny počet chýb protokolu, po ktorých bude spojenie uzavreté.
- Implementovaný prenos hlavičiek „Auth-SSL-Protocol“ a „Auth-SSL-Cipher“ serveru autentifikácie poštového proxy.
- Do modulu stream bola pridaná podpora TLS rozšírenia ALPN. Na určenie zoznamu podporovaných protokolov ALPN (h2, http/1.1) bola navrhnutá direktíva ssl_alpn, a pre získanie informácií o dohodnutom protokole ALPN s klientom bola pridaná premenna $ssl_alpn_protocol.
- Do modulu stream bol pridaný parameter „fastopen“, ktorý aktivuje režim „TCP Fast Open“ pre počúvajúce sokety.
- Naznačené escapovanie znakov „„, „“, „\“, „^“, „`“, „{“, „|“ a „}“ pri proxy s úpravou URI.
- Do modulu stream bola pridaná direktíva proxy_half_close, pomocou ktorej je možné nastaviť správanie pri uzatváraní proxy spojenia TCP na jednej zo strán („TCP half-close“).
- Do modulu ngx_http_mp4_module bola pridaná nová direktíva mp4_start_key_frame pre prenášanie video streamu začínajúceho od kľúčového snímku.
- Pridaná premenna $ssl_curve, ktorá vracia typ eliptickej krivky vybranej na dohodu kľúčov v rámci relácie TLS.
- Hodnota v príkaze „sendfile_max_chunk“ bola zmenená na 2 megabajty;
- Zabezpečená kompatibilita s knihovňou OpenSSL 3.0. Pridaná podpora pre volanie SSL_sendfile() pri používaní OpenSSL 3.0.
- Predvolená zostava obsahuje knižnicu PCRE2, ktorá poskytuje funkcie na spracovanie regulárnych výrazov.
- Pri nahrávaní certifikátov servera boli nastavené úrovne zabezpečenia, ktoré sú podporované od OpenSSL 1.1.0 a sú stanovené cez parameter „@SECLEVEL=N“ v direktíve ssl_ciphers.
- Podpora exportného súboru šifrov bola zrušená.
- V API filtrovania tela požiadavky bola povolená buffering spracovaných dát.
- Na platforme FreeBSD bola vylepšená podpora systémového volania sendfile, určeného na priame prenášanie údajov medzi súborovým deskriptorom a soketom. Stále aktívny režim sendfile(SF_NODISKIO) a pridaná podpora režimu sendfile(SF_NOCACHE).
- Podpora pre nastavenie HTTP/2 spojení pomocou rozšírenia NPN (Next Protocol Negotiation) namiesto ALPN bola zrušená.
- Zabezpečené blokovanie požiadaviek HTTP/1.0, ktoré zahŕňajú HTTP hlavičku „Transfer-Encoding“ (zavedená vo verzii protokolu HTTP/1.1).
- Posilnená ochrana pred útokmi typu „HTTP Request Smuggling“ na frontend-backend systémy, ktoré umožňujú zasahovanie do obsahu požiadaviek iných používateľov spracovávaných v tom istom vlákne medzi frontendom a backendom. Nginx teraz vždy vracia chybu pri použití metódy CONNECT; pri súčasnom uvedení hlavičiek „Content-Length“ a „Transfer-Encoding“; pri prítomnosti medzier alebo riadiacich symbolov v riadku požiadaviek, názve HTTP hlavičky alebo v hodnote hlavičky „Host“.
Zdroj: opennet.ru
