È stato rilasciato l'aggiornamento della versione principale di nginx 1.27.5, che continua a sviluppare nuove funzionalità. Nella ramificazione stabile supportata parallelamente 1.26.x vengono apportate solo modifiche relative alla correzione di errori critici e vulnerabilità. In futuro, sulla base della versione principale 1.27.x, sarà formata una ramificazione stabile 1.28. Il codice del progetto è scritto in linguaggio C e distribuito con licenza BSD.
Tra le novità in nginx 1.27.5:
- Per le connessioni che utilizzano il protocollo QUIC, è stato aggiunto il supporto per l'algoritmo di controllo del sovraccarico di rete CUBIC (RFC 9438), il cui funzionamento prevede un aumento graduale della dimensione della finestra di sovraccarico fino alla perdita di pacchetti, dopodiché la dimensione della finestra viene riportata a un valore precedente alla perdita. Nei test eseguiti, l'uso di CUBIC ha consentito di ridurre il tempo di trasferimento di un file di 500 MB del 24% a latenze di 40 ms e BDP di 750K (Bandwidth Delay Product) e del 73% a latenze di 100 ms e BDP di 9M.
- La dimensione massima delle sessioni SSL memorizzate nella memoria condivisa è stata aumentata a 8192.
- È stata stabilita l'integrazione con la libreria C Musl.
- Sono stati effettuati lavori di ottimizzazione delle prestazioni e correzione di errori nell'implementazione di HTTP/3.
- Sono stati corretti errori nell'implementazione delle direttive "grpc_ssl_password_file", "proxy_ssl_password_file" e "uwsgi_ssl_password_file", che si verificavano durante il caricamento dei certificati SSL e delle chiavi di crittografia da variabili.
- Sono stati risolti problemi relativi all'impostazione delle variabili $ssl_curve e $ssl_curves quando si utilizzavano implementazioni collegate di curve ellittiche in OpenSSL.
In aggiunta, si segnala la pubblicazione di versioni stabili del progetto FreeNginx 1.27.5 e 1.27.6, che sviluppa un fork di Nginx. Lo sviluppo del fork è guidato da Maksim Dunin, uno dei principali sviluppatori di Nginx. FreeNginx è posizionato come progetto non commerciale, garantendo lo sviluppo della base di codice di Nginx senza interferenze aziendali.
Modifiche in FreeNginx 1.27.5 e 1.27.6:
- Risolti problemi nell'uso di OpenSSL 3.5 (il nome del gruppo X25519MLKEM768 non veniva visualizzato nelle variabili $ssl_curve e $ssl_curves).
- Risolto un crash del processo di lavoro in configurazioni con la direttiva proxy_ssl_password_file, che si verificava quando venivano specificate variabili nelle direttive proxy_ssl_certificate e proxy_ssl_certificate_key.
- Alla direttiva listen è stato aggiunto il supporto per il parametro multipath.
- È vietato il riutilizzo delle sessioni SSL tra server che utilizzano certificati diversi nella direttiva ssl_trusted_certificate quando è abilitato il controllo dei certificati SSL dei client.
- È stato risolto il problema con il riutilizzo delle sessioni in un contesto diverso server virtuale quando si utilizza TLSv1.3 con OpenSSL 1.1.1e+.
- È stato risolto un problema durante l'utilizzo di zlib-ng.
Inoltre, è stata rilasciata la versione njs 0.8.10, un modulo per integrare interpreti di linguaggio JavaScript nel server http nginx. Supporta il collegamento di diversi motori JavaScript. Come motore di base viene proposto il motore QuickJS, con supporto per la specifica ECMAScript 2023. Njs consente di utilizzare script JavaScript nella configurazione per espandere le funzionalità di nginx. Gli script possono essere utilizzati per definire logiche avanzate di elaborazione delle richieste, formare configurazioni, generare dinamicamente risposte, modificare richieste/risposte o creare rapidamente stub per risolvere problemi nelle applicazioni web.
Modifiche in njs 0.8.10:
- Nel motore JavaScript QuickJS è stato aggiunto il supporto per l'API WebCrypto, TextEncoder e TextDecoder.
- Nel motore QuickJS sono stati aggiunti nuovi moduli querystring, crypto e xml.
- È stato aggiunto il supporto per la libreria QuickJS-NG.
- Nel modulo per nginx è stata implementata la lettura del contenuto di r.requestText e r.requestBuffer da un file temporaneo.
Fonte: opennet.ru
