Efter ett Ärs utveckling har den nya stabila versionen av den högpresterande HTTP-servern och den multiprotokollproxyservern nginx 1.20.0 presenterats, som innehÄller Àndringar som samlats in i den huvudsakliga versionen 1.19.x. Framtida Àndringar i den stabila versionen 1.20 kommer att fokusera pÄ att ÄtgÀrda allvarliga fel och sÄrbarheter. Snart kommer den huvudsakliga versionen nginx 1.21 att skapas, dÀr utvecklingen av nya funktioner kommer att fortsÀtta. För vanliga anvÀndare som inte behöver sÀkerstÀlla kompatibilitet med tredjepartsmoduler rekommenderas det att anvÀnda huvudversionen, baserat pÄ vilken kommersiella produkter som Nginx Plus slÀpps var tredje mÄnad.
Enligt marsrapporten frÄn företaget Netcraft anvÀnds nginx pÄ 20.15% av alla aktiva webbplatser (för ett Är sedan 19.56%, för tvÄ Är sedan 20.73%), vilket motsvarar andra plats i popularitet i denna kategori (andelen Apache Àr 25.38% (för ett Är sedan 27.64%), Google - 10.09%, Cloudflare - 8.51%. Vid en genomgÄng av alla webbplatser behÄller nginx ledningen och har en marknadsandel pÄ 35.34% (för ett Är sedan 36.91%, för tvÄ Är sedan 27.52%), medan andelen Apache Àr 25.98%, OpenResty (plattform baserad pÄ nginx och LuaJIT) - 6.55%, Microsoft IIS - 5.96%.
Bland de mest besökta miljonen webbplatser i vÀrlden har nginx en andel pÄ 25.55% (för ett Är sedan 25.54%, för tvÄ Är sedan 26.22%). För nÀrvarande drivs cirka 419 miljoner webbplatser av nginx (för ett Är sedan 459 miljoner). Enligt W3Techs anvÀnds nginx pÄ 33.7% av webbplatserna i den mest besökta miljonen, i april förra Äret var denna siffra 31.9%, och föregÄende Är var den 41.8% (nedgÄngen förklaras med övergÄngen till separat redovisning av http-servern Cloudflare). Andelen Apache har under Äret minskat frÄn 39.5% till 34%, och andelen Microsoft IIS frÄn 8.3% till 7%. Andelen LiteSpeed har ökat frÄn 6.3% till 8.4%, och Node.js frÄn 0.8% till 1.2%. I Ryssland anvÀnds nginx pÄ 79.1% av de mest besökta webbplatserna (för ett Är sedan - 78.9%).
De mest framtrÀdande förbÀttringarna som tillkommit under utvecklingen av huvudversionen 1.19.x:
- Möjligheten att verifiera klientcertifikat med hjÀlp av externa tjÀnster baserade pÄ protokollet OCSP (Online Certificate Status Protocol) har lagts till. För att aktivera verifieringen föreslÄs direktivet ssl_ocsp, för att konfigurera cache-storleken - ssl_ocsp_cache, för att ÄsidosÀtta URL:en för OCSP-tjÀnsten som anges i certifikatet - ssl_ocsp_responder.
- Modulen ngx_stream_set_module har lagts till, vilket gör att man kan tilldela ett vÀrde till variabeln server { lyssna 12345; sÀtt $true 1; }
- Direktivet proxy_cookie_flags har lagts till för att ange flaggor för cookies i proxyanslutningar. Till exempel, för att lÀgga till flaggan "httponly" till cookien "one", och för alla andra cookies flaggorna "nosecure" och "samesite=strict" kan man anvÀnda konstruktionen: proxy_cookie_flags one httponly; proxy_cookie_flags ~ nosecure samesite=strict;
Ett liknande direktiv, userid_flags, för att lÀgga till flaggor till cookies har ocksÄ implementerats för modulen ngx_http_userid.
- Direktiv som "ssl_conf_command", "proxy_ssl_conf_command", "grpc_ssl_conf_command" och "uwsgi_ssl_conf_command" har lagts till, med vilka man kan ange valfria parametrar för konfiguration av OpenSSL. Till exempel, för att prioritera ChaCha-krypteringsalgoritmer och finjustera krypteringen för TLSv1.3 kan man ange ssl_conf_command Options PrioritizeChaCha; ssl_conf_command Ciphersuites TLS_CHACHA20_POLY1305_SHA256;
- Direktivet "ssl_reject_handshake" har lagts till, vilket instruerar att avvisa alla försök till handskakning SSL-anslutningar (till exempel kan det anvÀndas för att avvisa alla förfrÄgningar med okÀnda vÀrdnamn i SNI-fÀltet). server { lyssna 443 ssl; ssl_reject_handshake on; } server { lyssna 443 ssl; server_namn example.com; ssl_certifikat example.com.crt; ssl_certifikatnyckel example.com.key; }
- Direktivet proxy_smtp_auth har lagts till i e-postproxies, vilket möjliggör autentisering av anvÀndaren pÄ backend med kommandot AUTH och mekanismen PLAIN SASL.
- Direktivet "keepalive_time" har lagts till, vilket begrÀnsar den totala livslÀngden för varje keep-alive-anslutning, efter vilken anslutningen stÀngs (förvÀxla inte med keepalive_timeout, vilket definierar tiden för inaktivitet efter vilken keep-alive-anslutningen stÀngs).
- Variabeln $connection_time har lagts till, vilket gör att man kan fÄ information om varaktigheten av anslutningen i sekunder med millisekundsprecision.
- I direktiven "proxy_cache_path", "fastcgi_cache_path", "scgi_cache_path" och "uwsgi_cache_path" har en parameter "min_free" lagts till, som reglerar storleken pÄ cachen baserat pÄ definitionen av minimi storlek av ledigt diskutrymme.
- Direktiven "lingering_close", "lingering_time" och "lingering_timeout" har anpassats för att fungera med HTTP/2.
- Koden för anslutningshantering i HTTP/2 Àr liknande implementeringen i HTTP/1.x. Stöd för individuella instÀllningar som «http2_recv_timeout», «http2_idle_timeout» och «http2_max_requests» har tagits bort till förmÄn för de allmÀnna direktiven «keepalive_timeout» och «keepalive_requests». InstÀllningarna «http2_max_field_size» och «http2_max_header_size» har tagits bort, varvid «large_client_header_buffers» bör anvÀndas istÀllet.
- En ny kommandoradsoption «-e» har lagts till, vilket gör det möjligt att ange en alternativ fil för att skriva loggar för fel, som kommer att anvÀndas istÀllet för loggen som anges i instÀllningarna. IstÀllet för filnamn kan ett speciellt vÀrde stderr anges.
KĂ€lla: opennet.ru
