Nakon godinu dana razvoja, objavljena je nova stabilna grana HTTP poslužitelja visokih performansi i proxy poslužitelja s više protokola nginx 1.28.0, koja uključuje promjene akumulirane u glavnoj grani 1.27.x. U budućnosti će sve promjene u stabilnoj grani 1.28 biti povezane s uklanjanjem ozbiljnih pogrešaka i ranjivosti. Uskoro će se formirati glavna grana nginxa 1.29 u kojoj će se nastaviti razvoj novih mogućnosti. Za obične korisnike koji nemaju zadatak osigurati kompatibilnost s modulima trećih strana, preporučuje se korištenje glavne grane, na temelju koje se svaka tri mjeseca formiraju izdanja komercijalnog proizvoda Nginx Plus.
Prema izvješću Netcrafta iz ožujka, oko 245 milijuna stranica radi pod nginxom (243 milijuna prije godinu dana, 289 milijuna prije dvije godine). Nginx se koristi na 17.89% svih aktivnih stranica (18.15% prije godinu dana, 18.94% prije dvije godine), što odgovara prvom mjestu po popularnosti u ovoj kategoriji (udio Apachea odgovara 16.03% (20.09% prije godinu dana, 20.52% prije dvije godine), Cloudflare - 17.81% (14.12%, 11.32%), Google - 9.89% (10.41%, 9.89%).
Kada se uzmu u obzir sve stranice, nginx zadržava svoje vodstvo i zauzima 20.48% tržišta (prije godinu dana 22.31%, prije dvije godine - 25.94%), dok je udio Apachea 16.03% (20.17%, 20.58%), Cloudflarea - 12.87% (11.24%, 10.17%), OpenRestyja (temeljen na platformi na nginx i LuaJIT) - 9.36% (7.93%, 7.94%).
Među milijun najposjećenijih stranica na svijetu, nginx je na drugom mjestu s udjelom od 20.37% (prije godinu dana 20.63%, prije dvije godine 21.37%). Cloudflare drži prvo mjesto s 22.32% (22.59% prije godinu dana, 21.62% prije dvije godine). Apache httpd udio je 17.95% (20.09%, 21.18%).
Prema W3Techs, nginx se koristi na 33.8% od milijuna najposjećenijih stranica (u travnju prošle godine ta je brojka bila 34.3%, pretprošle godine - 34.5%). Udio Apachea pao je s 30.1% na 26.3% tijekom godine, dok je udio Microsoft IIS-a pao s 5% na 4%. Udio Node.js-a porastao je s 3.2% na 4.4%, a udio LiteSpeed sa 12.9% na 14.6%.
Najznačajnija poboljšanja dodana tijekom razvoja 1.27.x uzvodne grane:
- Za veze koje koriste QUIC protokol, dodana je podrška za CUBIC algoritam za kontrolu zagušenja mreže (RFC 9438), koji radi postupnim povećanjem veličine prozora zagušenja dok ne dođe do gubitka paketa, nakon čega se veličina prozora vraća na vrijednost prije početka gubitka. U provedenim testovima, korištenje CUBIC-a omogućilo je smanjenje vremena prijenosa datoteke od 500 MB za 24% s kašnjenjima od 40 ms i BDP 750K (produkt kašnjenja propusnosti) i za 73% s kašnjenjima od 100 ms i BDP 9M.
- Stream modul je dodao podršku za provjeru opoziva klijentskih certifikata pomoću OCSP (Online Certificate Status Protocol).
- Stream modul implementira podršku za tehniku provjere opoziva certifikata OCSP Stapling, čija je suština da prilikom pregovaranja TLS veze, OCSP odgovor certificiran od strane certifikacijskog tijela prenosi poslužitelj koji opslužuje stranicu, bez potrebe za izravnim kontaktom s certifikacijsko tijelo).
- Keširanje se implementira tijekom pokretanja i ažuriranja konfiguracije. SSL certifikati, ključevi i CRL (popis opozvanih certifikata).
- Dodane su mogućnosti za smanjenje potrošnje resursa i opterećenja CPU-a pri korištenju TLS-a u konfiguracijama s velikim brojem blokova poslužitelja i lokacije. Dodane promjene omogućuju, umjesto stvaranja zasebnog SSL konteksta (SSL_CTX u OpenSSL) za svaki konfiguracijski blok, korištenje postojećeg SSL konteksta iz nadređenog bloka.
- Direktiva "ssl_client_certificate" pruža podršku za certifikate s dodatnim informacijama.
- Za provjeru SSL certifikata klijenta, direktiva "ssl_client_certificate" više nije potrebna.
- Dodana podrška za IMAP LOGIN način rada specifičan za SmarterMail s neoznačenim odgovorom CAPABILITY na modul ngx_mail_proxy_module.
- Direktiva “proxy_pass_trailers” dodana je modulu ngx_http_proxy_module, dopuštajući prijenos polja zaglavlja na kraju odgovora od proxy poslužitelja do klijenta.
- Direktiva "server" korištena u bloku "upstream" ažurirana je kako bi podržala parametar "resolve", koji omogućuje praćenje promjena. IP adrese za korišteno ime domene i automatsko ažuriranje konfiguracije "upstream" bloka bez potrebe za ponovnim pokretanjem nginxa ako se adresa promijeni.
- Dodana je mogućnost korištenja varijabli u direktivama "proxy_limit_rate", "fastcgi_limit_rate", "scgi_limit_rate" i "uwsgi_limit_rate".
- U direktivama "proxy_bind", "fastcgi_bind", "grpc_bind", "memcached_bind", "scgi_bind" i "uwsgi_bind", kao i kao adresa klijenta u modulu ngx_http_realip_module, dopuštene su IPv6 adrese u uglatim zagradama bez broja priključka.
- Dodana je direktiva "keepalive_min_timeout", koja definira vremensko ograničenje tijekom kojeg nginx neće zatvoriti održavajuću vezu s klijentom.
- Prema zadanim postavkama, protokoli TLSv1 i TLSv1.1 su onemogućeni.
- Riješeni problemi s dugim učitavanjem konfiguracijskih datoteka zbog opetovanog parsiranja istog skupa TLS certifikata, ključeva i popisa certifikacijskih tijela. Poboljšana izvedba ponovnog učitavanja konfiguracije ponovnim korištenjem nepromijenjenih TLS objekata kao što su certifikati, ključevi i CRL-ovi. Da biste onemogućili nasljeđivanje objekata prilikom ažuriranja konfiguracije, dodana je direktiva "ssl_object_cache_inheritable".
- Dodana predmemorija za certifikate i ključeve učitane pomoću varijabli u direktivama (npr. "ssl_certificate /etc/ssl/$ssl_server_name.crt"). Za upravljanje predmemorijom dodane su direktive "ssl_certificate_cache", "proxy_ssl_certificate_cache", "grpc_ssl_certificate_cache" i "uwsgi_ssl_certificate_cache". Navedene direktive omogućuju vam da konfigurirate maksimalnu veličinu predmemorije, razdoblje valjanosti zapisa i vrijeme za čišćenje neiskorištenih zapisa. Na primjer: "ssl_certificate_cache max=1000 inactive=20s valid=1m;".
- Smanjena potrošnja memorije prilikom obrade dugotrajnih upita u konfiguracijama koje koriste direktive "gzip", "gunzip", "ssi", "sub_filter" ili "grpc_pass".
- Maksimalna veličina SSL sesija pohranjenih u zajedničkoj memoriji povećana je na 8192.
- Uspostavljen je sklop s bibliotekom Musl C.
- Radilo se na optimizaciji performansi i uklanjanju grešaka u implementaciji HTTP/3.
Dodatno, vrijedi spomenuti objavljivanje izdanja projekta FreeNginx 1.28.0, koji razvija Nginx fork. Fork razvija Maxim Dunin, jedan od ključnih Nginx programera. FreeNginx se pozicionira kao neprofitni projekt koji omogućuje razvoj Nginx kodne baze bez uplitanja tvrtke. Među određenim promjenama u grani FreeNginx 1.28:
- Parametar "off" u direktivi "pid" onemogućuje stvaranje PID datoteke.
- Ograničavanje intenziteta pisanja poruka u zapisnik grešaka kako bi se spriječilo da se zapisnik popuni tipičnim porukama.
- Implementacija višeputnog parametra u direktivi slušanja za podršku Multipath TCP-a.
- Podrška za HTTP "Age" zaglavlje za definiranje životnog vijeka unosa u predmemoriju.
- Dodavanje metoda provjere autentičnosti XOAUTH2 i OAUTHBEARER modulu mail_proxy.
Izvor: opennet.ru
