Släpp nginx 1.20.0

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 avvisa alla försök att förhandla SSL-anslutningar (kan till exempel användas för att avvisa alla samtal med okända värdnamn i SNI-fältet). server { lyssna 443 ssl; ssl_reject_handshake på; } server { lyssna 443 ssl; servernamn exempel.com; ssl_certifikat exempel.com.crt; ssl_certifikatnyckel exempel.com.nyckel; }
  • 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

Lägg en kommentar