Egy év fejlesztés után bemutatásra került az új stabil ága a nagy teljesítményű HTTP szervernek és a több protokollos proxy szervernek, a nginx 1.20.0 verziója, amely magába foglalta az 1.19.x főágban felhalmozott változásokat. A jövőben minden változtatás a 1.20 stabil ágon komoly hibák és sebezhetőségek javítására összpontosít. Hamarosan megalakul az nginx 1.21 főág, ahol új lehetőségek fejlesztése folytatódik. A hagyományos felhasználók számára, akiknek nincsenek kompatibilitási követelményeik harmadik féltől származó modulokkal, a főág használatát ajánljuk, amely alapján háromhavonta készülnek el a kereskedelmi Nginx Plus termék kiadásai.
A Netcraft márciusi jelentése szerint az nginx az összes aktív weboldal 20,15%-án fut (egy évvel ezelőtt 19,56%, két évvel ezelőtt 20,73%), ami a második legelterjedtebb helyet jelenti ebben a kategóriában (az Apache részesedése 25,38% (egy évvel ezelőtt 27,64%), a Google 10,09%, a Cloudflare 8,51%). Ezenkívül, ha az összes weboldalt figyelembe vesszük, az nginx megőrzi vezető szerepét és 35,34% piaci részesedést képvisel (egy évvel ezelőtt 36,91%, két évvel ezelőtt 27,52%), míg az Apache részesedése 25,98%, az OpenResty (nginx és LuaJIT alapú platform) 6,55%, a Microsoft IIS 5,96%.
A világ egy millió leglátogatottabb weboldala közül az nginx részesedése 25,55% (egy évvel ezelőtt 25,54%, két évvel ezelőtt 26,22%). Jelenleg körülbelül 419 millió weboldal működik nginx alatt (egy évvel ezelőtt 459 millió). A W3Techs adatai szerint az nginx a leglátogatottabb egymillió weboldal 33,7%-án futott, tavaly áprilisban ez a szám 31,9% volt, két éve pedig 41,8% (a csökkenést a Cloudflare külön webkiszolgálóinak nyilvántartásba vételével magyarázzák). Az Apache részesedése egy év alatt csökkent 39,5%-ról 34%-ra, míg a Microsoft IIS részesedése 8,3%-ról 7%-ra. A LiteSpeed részesedése 6,3%-ról 8,4%-ra nőtt, a Node.js pedig 0,8%-ról 1,2%-ra.
A 1.19.x főág kialakítása során hozzáadott legjelentősebb fejlesztések:
- Lehetőség nyílt a kliens tanúsítványok ellenőrzésére külső szolgáltatások bevonásával az OCSP (Online Certificate Status Protocol) protokoll alapján. Az ellenőrzés engedélyezéséhez a ssl_ocsp direktívát, a gyorsítótár méretének beállításához a ssl_ocsp_cache direktívát, az OCSP kezelő URL-jének felülírásához, amely a tanúsítványban van megadva, pedig a ssl_ocsp_responder direktívát ajánlják.
- Beépítésre került az ngx_stream_set_module modul, amely lehetővé teszi a változó értékének beállítását. server { listen 12345; set $true 1; }
- Hozzáadva a proxy_cookie_flags direktíva, amely lehetővé teszi a Cookie-khoz tartozó flag-ek megadását a proxyt használó kapcsolatokban. Például a 'one' nevű Cookie-hoz a 'httponly' flag, míg az összes többi Cookie-hoz a 'nosecure' és 'samesite=strict' flag-ek megadására a következő szerkezet használható: proxy_cookie_flags one httponly; proxy_cookie_flags ~ nosecure samesite=strict;
Hasonló userid_flags direktíva a Cookie-khoz tartozó flag-ek hozzáadására is megvalósításra került az ngx_http_userid modul számára.
- Hozzáadva a 'ssl_conf_command', 'proxy_ssl_conf_command', 'grpc_ssl_conf_command' és 'uwsgi_ssl_conf_command' direktívák, amelyek segítségével tetszőleges paramétereket lehet megadni az OpenSSL beállításához. Például a ChaCha titkosítások előnyben részesítésére és a TLSv1.3 titkosítások részletes beállítására a következőket lehet megadni: ssl_conf_command Options PrioritizeChaCha; ssl_conf_command Ciphersuites TLS_CHACHA20_POLY1305_SHA256;
- Hozzáadva a 'ssl_reject_handshake' direktíva, amely előírja, hogy utasítani kell minden kézfogásra tett kísérletet. SSL-kapcsolatok (például használható az ismeretlen hostnevekből érkező kérések elutasítására az SNI mezőben). server { listen 443 ssl; ssl_reject_handshake on; } server { listen 443 ssl; server_name example.com; ssl_certificate example.com.crt; ssl_certificate_key example.com.key; }
- A levelezési proxyba hozzáadva a proxy_smtp_auth direktíva, amely lehetővé teszi a felhasználó azonosítását a backend-en az AUTH parancs és a PLAIN SASL mechanizmus segítségével.
- Hozzáadva a 'keepalive_time' direktíva, amely korlátozza az egyes keep-alive kapcsolatok teljes élettartamát, amelynek letelte után a kapcsolat lezárásra kerül (ne keverjük össze a keepalive_timeout-tal, amely az inaktivitás időtartamát határozza meg, amely után a keep-alive kapcsolat lezárásra kerül).
- Hozzáadva a $connection_time változó, amely lehetővé teszi, hogy másodpercekben, ezredmásodperc pontossággal információt nyerjünk a kapcsolat időtartamáról.
- A 'proxy_cache_path', 'fastcgi_cache_path', 'scgi_cache_path' és 'uwsgi_cache_path' direktívákhoz hozzáadva a 'min_free' paraméter, amely a minimális szabad lemezterület alapján szabályozza a cache méretét.
- A 'lingering_close', 'lingering_time' és 'lingering_timeout' direktívák adaptálva lettek a HTTP/2-höz.
- A kapcsolatok kezelési kódja a HTTP/2-höz közelít a HTTP/1.x megvalósításához. Az egyes beállítások 'http2_recv_timeout', 'http2_idle_timeout' és 'http2_max_requests' támogatása megszűnt a 'keepalive_timeout' és 'keepalive_requests' általános direktívák javára. Az 'http2_max_field_size' és 'http2_max_header_size' beállítások törlésre kerültek, helyettük a 'large_client_header_buffers' használata javasolt.
- Új parancssori opció került bevezetésre: „-e”, amely lehetővé teszi egy alternatív hibaologáló fájl megadását, ami a beállításokban megadott napló helyett használható. A fájl neve helyett egy speciális érték, a stderr is megadható.
Forrás: opennet.ru
