Pubblicazione di nginx 1.26.0 con supporto per HTTP/3

Dopo un anno di sviluppo, è stata pubblicata una nuova versione stabile del server HTTP ad alte prestazioni e proxy multi-protocollo nginx 1.26.0, che incorpora le modifiche accumulate nella versione principale 1.25.x. In futuro, tutte le modifiche nella versione stabile 1.26 si concentreranno sulla correzione di errori gravi e vulnerabilità. A breve sarà formata la versione principale nginx 1.27, in cui proseguirà lo sviluppo di nuove funzionalità. Per gli utenti comuni, che non hanno l'esigenza di garantire compatibilità con moduli di terze parti, si consiglia di utilizzare la versione principale, dalla quale vengono rilasciate nuove versioni commerciali di Nginx Plus ogni tre mesi.

Secondo il rapporto di marzo di Netcraft, circa 243 milioni di siti web sono gestiti da nginx (rispetto ai 289 milioni di un anno fa). Nginx è utilizzato dal 18,15% di tutti i siti attivi (contro il 18,94% di un anno fa e il 20,08% di due anni fa), il che lo colloca al secondo posto per popolarità in questa categoria (la quota di Apache è del 20,09% (rispetto al 20,52% di un anno fa e al 22,58% di due anni fa), Cloudflare - 14,12% (11,32%, 10,42%), Google - 10,41% (9,89%, 8,89%). Considerando tutti i siti, nginx mantiene la leadership con una quota del 22,31% del mercato (rispetto al 25,94% di un anno fa e al 31,13% di due anni fa), mentre la quota di Apache è del 20,17% (20,58%, 23,08%), Cloudflare - 11,24% (10,17%, 5,49%), OpenResty (una piattaforma basata su nginx e LuaJIT) - 7,93% (7,94%, 8,01%).

Среди миллиона самых посещаемых сайтов в мире доля nginx составляет 20.63% (год назад 21.37%, два года назад 21.79%), Cloudflare — 22.59% (год назад 21.62%), Apache httpd — 20.09% (21.18%). По данным W3Techs nginx используется на 34.3% сайтов из миллиона самых посещаемых, в апреля прошлого года этот показатель составлял 34.5%, позапрошлого — 33.1%. Доля Apache за год снизилась с 32.2% до %30.1, а доля Microsoft IIS снизилась с 5.6% до 4.8%. Доля Node.js увеличилась с 2.4% до 3.2%, а доля LiteSpeed с 11.8% до 12.9%.

I miglioramenti più significativi aggiunti durante la creazione della versione principale 1.25.x:

  • È stato aggiunto il modulo ngx_http_v3 con supporto sperimentale per il protocollo HTTP/3. Per la compilazione del modulo è prevista l'opzione "--with-http_v3_module". HTTP/3 definisce l'uso del protocollo QUIC (Quick UDP Internet Connections) come trasporto per HTTP/2. QUIC è un'estensione del protocollo UDP che supporta il multiplexing di più connessioni e fornisce metodi di crittografia equivalenti a TLS/SSL. Il protocollo è stato creato nel 2013 da Google come alternativa alla combinazione TCP+TLS per il Web, risolvendo problemi di latenza nella creazione e negoziazione delle connessioni TCP e eliminando i ritardi causati dalla perdita di pacchetti durante la trasmissione dei dati.
  • È stata aggiunta una direttiva separata «http2» per abilitare selettivamente il protocollo HTTP/2 legato ai server (può essere utilizzata in singoli blocchi «server»). Il parametro «http2» nella direttiva «listen» è stato dichiarato obsoleto.
  • È stata potenziata la protezione contro l'attività anomala dei client HTTP/2, in particolare contro gli attacchi DoS di tipo "Rapid Reset", in cui vengono creati un gran numero di flussi che vengono immediatamente resettati all'interno di una singola connessione HTTP/2. Nella configurazione predefinita, tali attacchi si urtano contro il limite sul numero di richieste nella connessione "keepalive_requests" (dopo ogni 1000 richieste, la connessione verrà resettata) e contro i limiti "limit_req". Per una risposta più tempestiva agli attacchi di flooding tramite un gran numero di flussi, è stato aggiunto un ulteriore limite che impedisce di creare più di 256 (2 * max_concurrent_streams) nuovi flussi per ogni ciclo di elaborazione eventi. Il nuovo limite consente di iniziare a bloccare le richieste prima di raggiungere il limite generale sul numero di flussi simultanei, ad esempio, quando i flussi vengono elaborati in modo asincrono o vengono resettati.
  • È stato aggiunto supporto al modulo stream server virtuali, la cui configurazione è definita nel blocco «server { … }» usando la direttiva server_name. server { server_name ~^(www\.)?(.+)$; proxy_pass www.$2:12345; }
  • È stato aggiunto un nuovo modulo ngx_stream_pass_module, progettato per instradare le connessioni ricevute direttamente a qualsiasi socket in ascolto, collegato a moduli come http, stream e mail. stream { server { listen 12345 ssl; ssl_certificate domain.crt; ssl_certificate_key domain.key; pass 127.0.0.1:8000; } }
  • Nella direttiva listen del modulo stream è stato introdotto il supporto per i parametri «deferred» (che attiva l'accept ritardato), «accept_filter» (filtro delle connessioni in entrata applicato prima della chiamata alla funzione accept) e «setfib» (impostazione della tabella di routing).
  • Per alcune architetture è stato implementato il supporto per la definizione delle dimensioni del blocco (cache line) utilizzato per il trasferimento dei dati tra la cache della CPU e la memoria.
  • Migliorato il controllo dei buffer utilizzati per la determinazione automatica delle connessioni HTTP/2.
  • Aumentata la performance di avvio delle configurazioni con un gran numero di direttive 'location'.
  • È stata rimossa la supporto per la tecnologia Server push in HTTP/2.
  • È stata interrotta la supporto per la direttiva "ssl", precedentemente dichiarata obsoleta.

La versione stabile del progetto FreeNginx 1.26.0, un fork di Nginx, è stata pubblicata due settimane fa. Lo sviluppo del fork è guidato da Maxim Dunin, uno degli sviluppatori chiave di Nginx. FreeNginx è posizionato come un progetto non commerciale che garantisce lo sviluppo della base di codice di Nginx senza coinvolgimento aziendale.

Fonte: opennet.ru

Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster