È stata rilasciata la versione principale di nginx 1.25.3, nell'ambito della quale continua lo sviluppo di nuove funzionalità. Nella branch stabile supportata parallelamente 1.24.x vengono apportate solo modifiche relative alla risoluzione di gravi bug e vulnerabilità. In futuro, sulla base della branch principale 1.25.x, verrà formata una branch stabile 1.26. Il codice del progetto è scritto in linguaggio C ed è distribuito con licenza BSD.
Tra le modifiche:
- Rafforzata la protezione contro attività anomale dei client HTTP/2, in particolare contro attacchi DoS di tipo 'Rapid Reset', in cui viene creato un gran numero di flussi che vengono resettati immediatamente all'interno di una singola connessione HTTP/2. Nella configurazione predefinita tali attacchi si scontrano con il limite sul numero di richieste per connessione 'keepalive_requests' (dopo ogni 1000 richieste, la connessione verrà resettata) e con i limiti 'limit_req'. Per una risposta più rapida agli attacchi tramite un gran numero di flussi, è stato aggiunto un ulteriore limite che non consente di creare per impostazione predefinita più di 256 (2 * max_concurrent_streams) nuovi flussi per ogni ciclo di elaborazione degli eventi. Il nuovo limite consente di iniziare a bloccare le richieste prima di raggiungere il limite totale sul numero di flussi simultanei, ad esempio quando i flussi vengono elaborati in modo asincrono o vengono resettati. Una modifica analoga è stata inclusa anche nella versione angie 1.3.1 (fork di nginx), pubblicata una settimana fa.
- Migliorato il controllo dei buffer utilizzati per l'autodeterminazione delle connessioni HTTP/2.
- Aumentata la performance di avvio delle configurazioni con un numero elevato di direttive 'location'.
- Risolto il crash del processo di lavoro osservato quando si tenta di utilizzare HTTP/2 senza SSL.
- Corretto l'elaborazione errata dell'intestazione 'Status' restituita dal backend con testo esplicativo vuoto.
- Eliminata una perdita di memoria durante la riconfigurazione, che si verifica quando si compila con la libreria PCRE2.
- Apportata una grande serie di correzioni e miglioramenti relativi al supporto del protocollo HTTP/3.
Contemporaneamente è stata rilasciata la versione njs 0.8.2, interprete del linguaggio JavaScript per web nginx. L'interprete njs implementa gli standard ECMAScript e consente di ampliare le funzionalità di nginx nella gestione delle richieste utilizzando script nella configurazione. Gli script possono essere utilizzati nel file di configurazione per definire logiche avanzate per la gestione delle richieste, generare configurazioni, generare risposte dinamicamente, modificare richieste/riposte o creare rapidamente stub per la risoluzione dei problemi nelle applicazioni web. Nella nuova versione è stato aggiunto l'oggetto console, che fornisce i metodi error(), info(), log(), time(), timeEnd() e warn(). Nel modulo fs è stato aggiunto il metodo fs.existsSync().
Si segnala anche la pubblicazione del server di applicazioni NGINX Unit 1.31.1, che fornisce una soluzione per l'esecuzione di applicazioni web in vari linguaggi di programmazione (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js e Java). Sotto la gestione di NGINX Unit possono essere eseguite contemporaneamente più applicazioni in diversi linguaggi di programmazione, i cui parametri di avvio possono essere cambiati dinamicamente senza necessità di modificare i file di configurazione e riavviare. Oltre alla correzione di errori, nella nuova versione del modulo Wasm è stata autorizzata la caricamento di dati superiori a 4 GB, e nella risposta è stata fornita la possibilità di impostare codici di stato HTTP.
Fonte: opennet.ru
