Come risolvere l'errore "Nginx Upstream Prematurely Closed Connection While Reading Response Header From Upstream"?

Pubblicato 17 ottobre 2024

Problema: Errore di Connessione Upstream di Nginx

L'errore "Nginx upstream prematurely closed connection while reading response header from upstream" si verifica quando Nginx non riesce a ottenere una risposta completa da un server upstream. Questo problema può interrompere applicazioni e servizi web. Spesso porta a richieste incomplete o fallite, influenzando le prestazioni e l'affidabilità del sistema.

Soluzione: Modificare la Configurazione di Nginx

Aumentare le impostazioni di timeout

Per risolvere l'errore "Upstream Prematurely Closed Connection", puoi modificare le impostazioni di timeout nella configurazione di Nginx:

  • Modifica proxy_read_timeout: Questa impostazione controlla quanto tempo Nginx attende che il server upstream invii dati. Aumenta questo valore per consentire più tempo per risposte di grandi dimensioni:
proxy_read_timeout 300s;
  • Regola proxy_connect_timeout: Questa impostazione determina quanto tempo Nginx attende per stabilire una connessione con il server upstream. Aumenta questo valore se il tuo server upstream impiega più tempo a rispondere:
proxy_connect_timeout 75s;
  • Imposta send_timeout: Questa impostazione specifica quanto tempo Nginx attende che il client accetti i dati. Regola questo valore in base alle esigenze della tua applicazione:
send_timeout 60s;

Suggerimento: Monitora e regola

Dopo aver apportato modifiche alle impostazioni di timeout, monitora le prestazioni del tuo server e regola i valori secondo necessità. Inizia con aumenti conservativi e affina gradualmente in base alle tue esigenze specifiche e ai modelli di traffico.

Ottimizzare le impostazioni dei buffer

L'ottimizzazione delle impostazioni dei buffer può aiutare a prevenire l'errore "Upstream Prematurely Closed Connection":

  • Configura proxy_buffers: Questa impostazione determina il numero e la dimensione dei buffer per la lettura della risposta dal server upstream. Regola questi valori in base alle risorse del tuo server e alle dimensioni tipiche delle risposte:
proxy_buffers 8 16k;
  • Regola proxy_buffer_size: Questa impostazione specifica la dimensione del buffer utilizzato per leggere la prima parte della risposta dal server upstream. Aumenta questo valore per header più grandi:
proxy_buffer_size 32k;
  • Ottimizza large_client_header_buffers: Questa impostazione controlla il numero massimo e la dimensione dei buffer utilizzati per la lettura di grandi header di richiesta del client. Regola questi valori se stai gestendo richieste con header di grandi dimensioni:
large_client_header_buffers 4 32k;

Regolando queste impostazioni di configurazione di Nginx, puoi spesso risolvere l'errore "Upstream Prematurely Closed Connection" e migliorare la capacità del tuo server di gestire risposte di grandi dimensioni e richieste complesse.