Nakon godine razvoja objavljena je nova stabilna verzija visokoperformantnog HTTP poslužitelja i višepromjensko posredničkog poslužitelja nginx 1.26.0, koja je ušla u promjene prikupljene u glavnoj verziji 1.25.x. U budućnosti će se sve promjene u stabilnoj verziji 1.26 odnositi na ispravljanje ozbiljnih grešaka i ranjivosti. Uskoro će biti formirana glavna verzija nginx 1.27, u kojoj će se nastaviti razvoj novih mogućnosti. Za obične korisnike, kojima nije potrebna kompatibilnost s vanjskim modulima, preporučuje se korištenje glavne verzije, na čijoj osnovi se jednom u tri mjeseca formiraju izdanja komercijalnog proizvoda Nginx Plus.
Prema ožujskom izvještaju tvrtke Netcraft, na nginx-u radi oko 243 milijuna web stranica (prije godinu dana 289 milijuna). Nginx se koristi na 18.15% svih aktivnih web stranica (prije godinu dana 18.94%, prije dvije godine 20.08%), što ga svrstava na drugo mjesto po popularnosti u ovoj kategoriji (udjel Apache-a iznosi 20.09% (prije godinu dana 20.52%, prije dvije godine 22.58%), Cloudflare — 14.12% (11.32%, 10.42%), Google — 10.41% (9.89%, 8.89%). Kada se razmatraju sve web stranice, nginx zadržava vodstvo i zauzima 22.31% tržišta (prije godinu dana 25.94%, prije dvije godine — 31.13%), dok udjel Apache-a iznosi 20.17% (20.58, 23.08%), Cloudflare — 11.24% (10.17, 5.49%), OpenResty (platforma na bazi nginx-a i LuaJIT-a) — 7.93% (7.94%, 8.01%).
Među milijun najposjećenijih stranica na svijetu, udio nginx-a iznosi 20.63% (prije godinu dana 21.37%, prije dvije godine 21.79%), Cloudflare — 22.59% (prije godinu dana 21.62%), Apache httpd — 20.09% (21.18%). Prema podacima W3Techs, nginx se koristi na 34.3% stranica među milijun najposjećenijih, dok je u travnju prošle godine taj pokazatelj iznosio 34.5%, a prije dvije godine 33.1%. Udio Apache-a smanjio se s 32.2% na 30.1%, dok je udio Microsoft IIS-a pao s 5.6% na 4.8%. Udio Node.js-a porastao je s 2.4% na 3.2%, dok je udio LiteSpeed-a porastao s 11.8% na 12.9%.
Najistaknutija poboljšanja dodana tijekom formiranja glavne verzije 1.25.x:
- Dodana je ngx_http_v3 modul s eksperimentalnom podrškom za HTTP/3 protokol. Za izgradnju modula dostupna je opcija „—with-http_v3_module“. HTTP/3 definira korištenje QUIC (Quick UDP Internet Connections) protokola kao transporta za HTTP/2. QUIC je sloj iznad UDP protokola koji podržava multiplexiranje više veza i pruža metode šifriranja koje su ekvivalentne TLS/SSL-u. Protokol je razvijen 2013. godine od strane Googlea kao alternativa TCP+TLS kombinaciji za web, rješavajući probleme s dugim vremenom postavljanja i pregovaranja veza u TCP-u i eliminirajući kašnjenje pri gubitku paketa tijekom prijenosa podataka.
- Dodana je nova direktiva „http2“ za selektivno uključivanje HTTP/2 protokola na povezivanju s serverima (može se koristiti unutar pojedinačnih „server“ blokova). „http2“ parametar u „listen“ direktivi prokazan je kao zastario.
- Ojačana je zaštita od anomalnih aktivnosti HTTP/2 klijenata, posebno od DoS napada vrste „Rapid Reset“, gdje se stvara veliki broj trenutno odbijenih struja unutar jedne HTTP/2 veze. U zadnjoj konfiguraciji takvi napadi nailaze na limit za broj zahtjeva po vezi „keepalive_requests“ (nakon svakih 1000 zahtjeva, veza će se resetirati) i na ograničenja „limit_req“. Kako bi se ranije reagiralo na spam zahtjeve preko velikog broja struja dodano je dodatno ograničenje, koje po defaultu ne dopušta kreiranje više od 256 (2 * max_concurrent_streams) novih struja po ciklusu obrade događaja. Novo ograničenje omogućuje blokiranje zahtjeva prije nego se dostigne ukupni limit za broj istovremenih struja, primjerice kada se struje obrađuju asinkrono ili se resetiraju.
- U modul stream dodana je podrška virtualnih servera, čija konfiguracija se definira u bloku «server { … }» pomoću direktive server_name. server { server_name ~^(www\.)?(.+)$; proxy_pass www.$2:12345; }
- Dodan je novi modul ngx_stream_pass_module, namijenjen za prosljeđivanje prihvaćenih veza izravno u bilo koji aktivni socket povezan s takvim modulima kao što su http, stream i mail. stream { server { listen 12345 Uklonjena je neiskorištena tabela INFORMATION_SCHEMA.TABLESPACES.; ssl_certificate domain.crt; ssl_certificate_key domain.key; pass 127.0.0.1:8000; } }
- U direktivi listen modula stream implementirana je podrška za parametre «deferred» (uključuje odgođeni accept), «accept_filter» (filter dolaznih veza koji se primjenjuje prije pozivanja funkcije accept) i «setfib» (postavljanje tablice usmjeravanja).
- Za neka arhitekture implementirana je podrška za određivanje veličine bloka (cache line), koja se koristi za prijenos podataka između CPU cache-a i memorije.
- Poboljšano je upravljanje baferima koji se koriste prilikom automatskog određivanja HTTP/2 veza.
- Povećana je učinkovitost pokretanja konfiguracija s velikim brojem „location“ direktiva.
- Podrška za Server push tehnologiju u HTTP/2 je uklonjena.
- Podrška za direktivu „ssl“, koja je ranije proglašena zastarjelom, je obustavljena.
Stabilna verzija projekta FreeNginx 1.26.0, podprojekta Nginxa, objavljena je prije dva tjedna. Razvoj fork-a vodi Maksim Dunin, jedan od ključnih programera Nginxa. FreeNginx se pozicionira kao neprofitni projekt koji osigurava razvoj koda Nginx bez korporativnog miješanja.
Izvor: opennet.ru
