Rilascio di nginx 1.30.0 e fork di FreeNginx 1.30.0

Dopo un anno di sviluppo, è stata pubblicata una nuova versione stabile del server HTTP ad alte prestazioni e del server proxy multi-protocollo nginx 1.30.0, che incorpora le modifiche accumulate nella versione principale 1.29.x. In futuro, tutte le modifiche nella versione stabile 1.30 riguarderanno la risoluzione di gravi bug e vulnerabilità. A breve sarà formata la versione principale nginx 1.31, in cui continuerà lo sviluppo di nuove funzionalità. Per gli utenti comuni, che non hanno l'esigenza di garantire la compatibilità con moduli di terze parti, si raccomanda di utilizzare la versione principale, su cui vengono rilasciate versioni del prodotto commerciale Nginx Plus ogni tre mesi. Il codice di nginx è scritto in linguaggio C e distribuito con licenza BSD.

Secondo il rapporto di febbraio della società Netcraft, circa 321 milioni di siti web sono gestiti da nginx (un anno fa 245 milioni, due anni fa 243 milioni, tre anni fa 289 milioni). Nginx è utilizzato dal 16,08% di tutti i siti web attivi (un anno fa 17,89%, due anni fa 18,15%, tre anni fa 18,94%), il che corrisponde al secondo posto per popolarità in questa categoria (la quota di Apache è del 13,27% (un anno fa 16,03%, due anni fa 20,09%, tre anni fa 20,52%), Cloudflare - 20,62% (17,81%, 14,12%, 11,32%), Google - 10,65% (9,89%, 10,41%, 9,89%).

Considerando tutti i siti web, nginx mantiene la leadership con una quota del 22,65% del mercato (un anno fa 20,48%, due anni fa 22,31%, tre anni fa 25,94%), mentre la quota di Apache è del 12,19% (16,03%, 20,17%, 20,58%), Cloudflare - 15,27% (12,87%, 11,24%, 10,17%), OpenResty (piattaforma basata su nginx e LuaJIT) - 8,01% (9,36%, 7,93%, 7,94%).

Tra un milione di siti web più visitati al mondo, nginx occupa il secondo posto con una quota del 19,85% (un anno fa 20,37%, due anni fa 20,63%, tre anni fa 21,37%). Al primo posto si trova Cloudflare con il 26,84% (22,32%, 22,59%, 21,62%). La quota di Apache httpd è del 15,84% (17,95%, 20,09%, 21,18%). Rilascio di nginx 1.30.0 e fork di FreeNginx 1.30.0

Secondo i dati di W3Techs, nginx è utilizzato dal 32,8% dei siti più visitati (ad aprile dello scorso anno questa percentuale era del 33,8%, due anni fa del 34,3%). La quota di Apache è diminuita nell'anno dal 26,3% al 23,9%, la quota di Microsoft IIS è scesa dal 4% al 3,4%, mentre la quota di Caddy è scesa dallo 0,3% allo 0,2%. La quota di Node.js è aumentata dal 4,4% al 6,0%, e la quota di LiteSpeed è aumentata dal 14,6% al 15,2%.

I miglioramenti più significativi aggiunti nel processo di sviluppo della versione principale 1.29.x:

  • È stato aggiunto il supporto per l'estensione TLS ECH (Encrypted ClientHello), che continua lo sviluppo dell'estensione ESNI (Encrypted Server Name Indication) e viene utilizzato per crittografare le informazioni sui parametri delle sessioni TLS, come il nome di dominio richiesto. La principale differenza tra ECH ed ESNI è che in ECH, anziché crittografare a livello di singoli campi, viene crittografato l'intero messaggio TLS ClientHello, consentendo di bloccare eventuali perdite attraverso i campi non coperti da ESNI, ad esempio il campo PSK (Pre-Shared Key). L'uso di ECH è attivato specificando nel file di configurazione ECHConfig nel formato PEM la direttiva "ssl_ech_file". Il supporto è disponibile utilizzando le build di OpenSSL con ECH.
  • È stato aggiunto il supporto per il protocollo Multipath TCP (MPTCP), che consente di inviare pacchetti simultaneamente su diversi percorsi tramite interfacce di rete differenti. Per attivarlo, è stato aggiunto il parametro «multipath» nella direttiva «listen».
  • È stata aggiunta la possibilità di legare le sessioni dei client agli stessi server nel gruppo. Sono disponibili tre metodi: «cookie» — invio dei dati tramite la Cookie selezionata; server «route» — il server proxy assegna un percorso al client al primo ricevimento della richiesta; «learn» — nginx analizza le risposte dal server upstream e memorizza le sessioni avviate dal server. Per configurare il legame nel blocco «upstream» del modulo «http», è stata aggiunta la direttiva «sticky», e nella direttiva «server» sono stati aggiunti i parametri «route» e «drain».
  • È stata aggiunta la direttiva «early_hints» e implementato il supporto per il codice HTTP 103 nelle risposte dai backend proxy e gRPC. Il codice 103 consente di informare il client sui contenuti di alcuni header HTTP subito dopo la richiesta, senza attendere che il server completi tutte le operazioni correlate alla richiesta e inizi a restituire i contenuti. In questo modo è possibile fornire suggerimenti su elementi correlati alla pagina restituita che possono essere precaricati (ad esempio, possono essere forniti collegamenti a CSS e JavaScript utilizzati nella pagina). Ricevendo informazioni su tali risorse, il browser inizia il loro caricamento senza attendere il termine della restituzione della pagina principale, riducendo così il tempo complessivo di elaborazione della richiesta.
  • Sono state aggiunte le direttive add_header_inherit e add_trailer_inherit, che consentono di modificare le regole di ereditarietà dei valori specificati nelle direttive add_header e add_trailer. Il parametro «off» annulla l'ereditarietà dei valori, mentre il parametro «merge» include l'aggiunta dei valori dal livello precedente ai valori dell'attuale livello.
  • Aggiunta la direttiva 'ssl_certificate_compression' per gestire la compressione di certificati TLS.
  • È stata aggiunta la direttiva max_headers, che limita il numero massimo di intestazioni HTTP in una richiesta. Se il limite viene superato, viene restituito un errore 400 (Bad Request). Questa funzionalità è stata trasferita da FreeNginx.
  • Sono state aggiunte le variabili $request_port e $is_request_port. La prima variabile contiene il numero di porta dal componente URI o dall'intestazione «Host», mentre la seconda contiene «:», se la variabile $request_port non è vuota.
  • Sono state aggiunte le variabili $ssl_sigalg e $ssl_client_sigalg, che contengono il nome dell'algoritmo di firma digitale per la connessione TLS.
  • Nella direttiva «geo» è stato aggiunto il parametro «volatile», che disattiva la memorizzazione nella cache della variabile. È consentito utilizzare maschere nella direttiva «include» specificata all'interno del blocco «geo».
  • Nel blocco «upstream» è stata attivata per impostazione predefinita la direttiva «keepalive». Nella direttiva «keepalive», utilizzata nel blocco «upstream», è stato aggiunto il parametro «local». Specificando questo parametro, invece di utilizzare una connessione condivisa al server upstream comune citato in diversi blocchi location e server, viene mantenuta una connessione separata per ciascun blocco verso l'upstream.
  • Quando si utilizza in modalità proxy, per impostazione predefinita è impostata la versione del protocollo HTTP/1.1 con attivazione della modalità keep-alive (nel modulo ngx_http_proxy_module il supporto per keep-alive è abilitato per impostazione predefinita e il valore «1.1» è impostato nella direttiva «proxy_http_version», e l'invio dell'header «Connection» è interrotto per impostazione predefinita.)
  • Il modulo ngx_http_proxy ha aggiunto il supporto per il protocollo HTTP/2, che consente l'uso di HTTP/2 quando si interagisce con i backend.
  • È stata fornita la possibilità di caricare chiavi crittografiche da token hardware, utilizzando come fornitore la libreria OpenSSL.
  • È stata aggiunta al protocollo QUIC il supporto per la modalità 0-RTT, disponibile su sistemi con OpenSSL 3.5.1 e versioni più recenti.
  • È stata aggiunta la possibilità di assemblaggio con la libreria crittografica AWS-LC, sviluppata da Amazon.
  • Per impostazione predefinita, la compressione dei certificati TLSv1.3 è disabilitata.
  • È stata garantita la compatibilità con la libreria OpenSSL 4.0.

Inoltre, si segnala la pubblicazione della versione 1.30.0 del progetto FreeNginx, che sviluppa un fork di Nginx. Lo sviluppo del fork è guidato da Maksim Dunin, uno dei principali sviluppatori di Nginx. FreeNginx è posizionato come un progetto non commerciale, che consente lo sviluppo della base di codice di Nginx senza interventi aziendali. Il codice di FreeNginx continua a essere distribuito sotto la licenza BSD. Tra le modifiche nella branch FreeNginx 1.30: è stata aggiunta la supporto all'estensione TLS ECH (Encrypted Client Hello); migliorata la gestione della direttiva limit_rate; aggiunte le direttive send_min_rate e client_body_min_rate; implementata la possibilità di limitare il numero di connessioni e l'intensità delle richieste nel proxy di posta; aggiunto il supporto per il database GeoIP2 nel modulo GeoIP; rinforzata la protezione del modulo XSLT.

Fonte: opennet.ru

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