Släpp nginx 1.18.0

Efter ett år av utveckling presenteras ny stabil gren av högpresterande HTTP-server och multiprotokoll proxyserver nginx 1.18.0, som absorberade förändringarna ackumulerade inom huvudgrenen 1.17.x. I framtiden kommer alla förändringar i den stabila grenen 1.18 att vara relaterade till eliminering av allvarliga fel och sårbarheter. Huvudgrenen av nginx 1.19 kommer snart att bildas, inom vilken 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, rekommenderad använd huvudgrenen, på grundval av vilken utgåvor av den kommersiella produkten Nginx Plus bildas var tredje månad.

Enligt April rapport Netcraft nginx används på 19.56% av alla aktiva sajter (för ett år sedan 20.73%, för två år sedan 21.02%), vilket motsvarar andraplatsen i popularitet i denna kategori (Apaches andel motsvarar 27.64%, Google - 10.03%, Microsoft IIS - 4.77 %) . Samtidigt, när man överväger alla sajter, behåller nginx sitt ledarskap och upptar 36.91% av marknaden (för ett år sedan 27.52%), medan Apaches andel motsvarar 24.73%, Microsoft IIS - 12.85%, Google - 3.42%.

Bland de miljoner mest besökta webbplatserna i världen är nginx andel 25.54 % (för ett år sedan 26.22 %, för två år sedan 23.76 %). För närvarande kör cirka 459 miljoner webbplatser Nginx (397 miljoner för ett år sedan). Förbi Enligt W3Techs nginx används på 31.9 % av sajterna av de miljon mest besökta, i april förra året var denna siffra 41.8 %, året innan – 38 % (nedgången förklaras av övergången till separat redovisning av Cloudflares http-server). Apaches andel sjönk under året från 43.6 % till 38.9 %, och Microsoft IIS:s andel från 8.6 % till 8.3 %. I Ryssland nginx används på 78.9 % av de mest besökta webbplatserna (för ett år sedan - 81 %).

De mest anmärkningsvärda förbättringarna som lades till under utvecklingen av 1.17.x uppströmsgrenen:

  • Direktivet har lagts till limit_req_dry_run, som aktiverar provkörningsläget, i vilket inga begränsningar tillämpas på intensiteten av förfrågningsbehandling (utan hastighetsgräns), men fortsätter att ta hänsyn till antalet förfrågningar som överskrider gränserna i delat minne;
  • Direktivet har lagts till limit_conn_dry_run, som växlar modulen ngx_http_limit_conn_module till testkörningsläge, där antalet anslutningar inte är begränsat, utan tas med i beräkningen;
  • Lagt till direktiv "auth_delay", som låter dig lägga till en fördröjning på obehöriga förfrågningar med en svarskod på 401 för att minska intensiteten av lösenordsgissning och skydda mot attacker, manipulera mätningen av exekveringstiden för operationer (timing attack) vid åtkomst till system till vilka åtkomsten är begränsad Lösenord, resultatet av en underfråga eller J.W.T. (JSON Web Token);
  • Lade till stöd för variabler i "limit_rate" och "limit_rate_after"-direktiven, såväl som i "proxy_upload_rate" och "proxy_download_rate"-direktiven för streammodulen;
  • I direktivet grpc_pass lagt till stöd för att använda en variabel i en parameter som definierar en adress. Om adressen anges som ett domännamn, söks namnet bland de beskrivna grupperna av servrar och, om det inte hittas, bestäms det med hjälp av en resolver;
  • Nya variabler har lagts till $proxy_protocol_server_addr и $proxy_protocol_server_port, som innehåller serveradressen och porten som erhålls från PROXY-protokollhuvudet;
  • I modulen ngx_stream_limit_conn_module variabel tillagd $limit_conn_status, som lagrar resultatet av att begränsa antalet anslutningar: PASSED, REJECTED eller REJECTED_DRY_RUN;
  • I modulen ngx_http_limit_req_module variabel tillagd $limit_req_status, som lagrar resultatet av att begränsa antalet ankomster av förfrågningar: PASSED, DELAYED, REJECTED, DELAYED_DRY_RUN eller REJECTED_DRY_RUN;
  • Som standard är modulen monterad ngx_http_postpone_filter_module;
  • Lade till stöd för att växla namngivna "plats"-block med metoden $r->internal_redirect() som tillhandahålls av den inbyggda Perl-tolken. Denna metod innefattar nu behandling av URI:er med escaped tecken;
  • När du använder "uppströms"-direktivet i inställningsblocket "uppströms".hash» för att organisera lastbalansering med klient-serverbindning, om du anger ett tomt nyckelvärde, är det enhetliga balanseringsläget (round-robin) nu aktiverat;
  • Lade till stöd för att anropa ioctl(FIONREAD) om tillgängligt för att undvika att läsa från en snabb anslutning över tid.

Källa: opennet.ru

Lägg en kommentar