Efter ett Ärs utveckling har en ny stabil gren av den högpresterande HTTP-servern och multiprotokoll-proxyservern nginx 1.20.0 introducerats, som innehÄller Àndringarna som ackumulerats i huvudgrenen 1.19.x. I framtiden kommer alla förÀndringar i den stabila grenen 1.20 att vara relaterade till eliminering av allvarliga fel och sÄrbarheter. Snart kommer huvudgrenen av nginx 1.21 att bildas, dÀr utvecklingen av nya funktioner kommer att fortsÀtta. För vanliga anvÀndare som inte har till uppgift att sÀkerstÀlla kompatibilitet med tredjepartsmoduler, rekommenderas det att anvÀnda huvudgrenen, pÄ grundval av vilken utgÄvor av den kommersiella produkten Nginx Plus bildas var tredje mÄnad.
Enligt en marsrapport frÄn Netcraft anvÀnds nginx pÄ 20.15 % av alla aktiva sajter (för ett Är sedan 19.56 %, för tvÄ Är sedan 20.73 %), vilket motsvarar andraplatsen i popularitet i denna kategori (Apaches andel motsvarar 25.38 % (för ett Är sedan 27.64%), Google - 10.09%, Cloudflare - 8.51%. Samtidigt, nÀr man tar hÀnsyn till alla sajter, behÄller nginx sitt ledarskap och upptar 35.34% av marknaden (för ett Är sedan 36.91%, för tvÄ Är sedan - 27.52%), medan Apaches andel motsvarar 25.98%, OpenResty (plattform baserad pÄ nginx och LuaJIT.) - 6.55%, Microsoft IIS - 5.96%.
Bland de miljoner mest besökta webbplatserna i vÀrlden Àr nginx andel 25.55 % (för ett Är sedan 25.54 %, för tvÄ Är sedan 26.22 %). För nÀrvarande kör cirka 419 miljoner webbplatser Nginx (459 miljoner för ett Är sedan). Enligt W3Techs anvÀnds nginx pÄ 33.7 % av sajterna av de miljoner mest besökta, i april förra Äret var denna siffra 31.9 %, Äret innan - 41.8 % (minskningen förklaras av övergÄngen till separat redovisning av Cloudflare http server). Apaches andel sjönk under Äret frÄn 39.5 % till 34 %, och Microsoft IIS:s andel frÄn 8.3 % till 7 %. LiteSpeeds andel vÀxte 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 anmÀrkningsvÀrda förbÀttringarna som lades till under utvecklingen av 1.19.x uppströmsgrenen:
- Lade till möjligheten att verifiera klientcertifikat med hjÀlp av externa tjÀnster baserade pÄ OCSP-protokollet (Online Certificate Status Protocol). För att aktivera kontrollen föreslÄs ssl_ocsp-direktivet, för att konfigurera cachestorleken - ssl_ocsp_cache, för att omdefiniera URL:en för OCSP-hanteraren som anges i certifikatet - ssl_ocsp_responder.
- Modulen ngx_stream_set_module ingÄr, som lÄter dig tilldela ett vÀrde till variabelservern { lyssna 12345; sÀtt $true 1; }
- Lade till direktivet proxy_cookie_flags för att ange flaggor för cookies i proxyanslutningar. Till exempel, för att lÀgga till "httponly"-flaggan till Cookie "one", och "nosecure" och "samesite=strict"-flaggor för alla andra cookies, kan du anvÀnda följande konstruktion: proxy_cookie_flags one httponly; proxy_cookie_flags ~ nosecure samesite=strict;
Ett liknande userid_flags-direktiv för att lÀgga till flaggor till cookies Àr ocksÄ implementerat för modulen ngx_http_userid.
- Lade till direktiven "ssl_conf_command", "proxy_ssl_conf_command", "grpc_ssl_conf_command" och "uwsgi_ssl_conf_command", med vilka du kan stÀlla in godtyckliga parametrar för att konfigurera OpenSSL. Till exempel, för att prioritera ChaCha-chiffer och avancerad konfiguration av TLSv1.3-chiffer, kan du ange ssl_conf_command Alternativ PrioritizeChaCha; ssl_conf_command Ciphersuites TLS_CHACHA20_POLY1305_SHA256;
- Lade till direktivet "ssl_reject_handshake", som instruerar att alla handskakningsförsök ska avvisas. SSL-anslutningar (kan till exempel 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_name example.com; ssl_certificate example.com.crt; ssl_certificate_key example.com.key; }
- Direktivet proxy_smtp_auth har lagts till i e-postproxyn, vilket gör att du kan autentisera anvÀndaren pÄ backend med AUTH-kommandot och PLAIN SASL-mekanismen.
- Lade till direktivet "keepalive_time", som begrÀnsar den totala livslÀngden för varje keep-alive-anslutning, varefter anslutningen kommer att stÀngas (inte att förvÀxla med keepalive_timeout, som definierar inaktivitetstiden efter vilken keep-alive-anslutningen stÀngs).
- Lade till variabeln $connection_time, genom vilken du kan fÄ information om anslutningens varaktighet i sekunder med millisekunders noggrannhet.
- En "min_free"-parameter har lagts till i direktiven "proxy_cache_path", "fastcgi_cache_path", "scgi_cache_path" och "uwsgi_cache_path", som reglerar cachestorleken baserat pÄ att bestÀmma minimistorleken pÄ ledigt diskutrymme.
- Direktiven "lingering_close", "lingering_time" och "lingering_timeout" har anpassats för att fungera med HTTP/2.
- Anslutningsbearbetningskoden i HTTP/2 Àr nÀra HTTP/1.x-implementeringen. Stödet för de individuella instÀllningarna "http2_recv_timeout", "http2_idle_timeout" och "http2_max_requests" har upphört 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 och "large_client_header_buffers" ska anvÀndas istÀllet.
- Lade till ett nytt kommandoradsalternativ "-e", som lÄter dig ange en alternativ fil för att skriva felloggen, som kommer att anvÀndas istÀllet för loggen som anges i instÀllningarna. IstÀllet för filnamnet kan du ange specialvÀrdet stderr.
KĂ€lla: opennet.ru
