Rilascio di nginx 1.19.7, njs 0.5.1 e NGINX Unit 1.22.0

È stato rilasciato il ramo principale di nginx 1.19.7, all'interno del quale continua lo sviluppo di nuove funzionalità (nel ramo stabile supportato in parallelo 1.18 vengono apportate solo modifiche relative all'eliminazione di errori gravi e vulnerabilità).

Principali modifiche:

  • Quando un processo di lavoro esaurisce le connessioni libere, nginx ora chiude non solo le connessioni keepalive, ma anche le connessioni in attesa della chiusura del socket (“lingering close”).
  • Il codice di elaborazione della connessione in HTTP/2 è simile all'implementazione HTTP/1.x. Il supporto per le singole impostazioni "http2_recv_timeout", "http2_idle_timeout" e "http2_max_requests" è stato interrotto a favore delle direttive generali "keepalive_timeout" e "keepalive_requests".
  • Le impostazioni "http2_max_field_size" e "http2_max_header_size" sono state rimosse e al loro posto dovrebbe essere utilizzato "large_client_header_buffers".

Contemporaneamente è stato rilasciato njs 0.5.1, un interprete JavaScript per il web server nginx. L'interprete njs implementa gli standard ECMAScript e consente di espandere la capacità di nginx di elaborare le richieste utilizzando gli script nella configurazione. Gli script possono essere utilizzati in un file di configurazione per definire la logica avanzata per l'elaborazione delle richieste, la generazione di una configurazione, la generazione dinamica di una risposta, la modifica di una richiesta/risposta o la creazione rapida di stub per risolvere problemi nelle applicazioni web.

La nuova versione aggiunge la direttiva “js_header_filter”, che consente di impostare una funzione JavaScript per filtrare e modificare intestazioni di risposta arbitrarie: js_import foo.js; posizione / { js_header_filter foo.filter; proxy_pass http://127.0.0.1:8081/; } foo.js: function filter(r) { var cookies = r.headersOut['Set-Cookie']; var len = r.args.len ? Numero(r.args.len): 0; r.headersOut['Set-Cookie'] = cookies.filter(v=>v.length > len); } esporta il {filtro} predefinito;

Viene aggiunto anche il metodo ngx.fetch(), che implementa l'API Fetch, che fornisce funzionalità client HTTP. Il metodo supporta l'elaborazione delle opzioni body, headers, buffer_size e max_response_body_size. L'oggetto Response restituito supporta arrayBuffer(), bodyUsed, json(), headers, ok, reindirizzamento, status, statusText, text(), metodi type e url e l'oggetto Header supporta get(), getAll() e has() metodi. function fetch(r) { ngx.fetch('http://nginx.org/') .then(risposta => risposta.text()) .then(corpo => r.return(200, corpo)) .catch (e => r.return(501, e.messaggio)); }

Da segnalare anche la pubblicazione del server applicativo NGINX Unit 1.22, che offre una soluzione per eseguire applicazioni web in diversi linguaggi di programmazione (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js e Java). L'unità NGINX può eseguire contemporaneamente più applicazioni in diversi linguaggi di programmazione, i cui parametri di avvio possono essere modificati dinamicamente senza la necessità di modificare i file di configurazione e riavviare. Il codice è scritto in C e distribuito sotto la licenza Apache 2.0.

La nuova versione di NGINX Unit si è concentrata sul miglioramento della stabilità, sull'espansione degli strumenti di test e sulla correzione dei bug. Nei pacchetti generati per Linux, l'utente e il gruppo con cui viene eseguita NGINX Unit sono stati modificati. Invece di nessuno: nessuno, i processi ora vengono eseguiti sotto l'unità utente individuale nel gruppo di unità. Compatibilità garantita con l'API Stream degli oggetti ServerRequest e ServerResponse dal modulo Node.js. L'opzione "percorso" per le applicazioni Python consente di specificare più directory.

Fonte: opennet.ru

Aggiungi un commento