Come risolvere l'errore Nginx "(110: Connection timed out) while reading response header from upstream"?

Pubblicato 27 agosto 2024

Problema: Errore di Timeout della Connessione Nginx

L'errore "(110: Connection timed out) while reading response header from upstream" in Nginx si verifica quando il server non riceve una risposta rapida da un servizio upstream. Questo problema può influenzare le applicazioni web, causando una lenta distribuzione dei contenuti. Gli utenti potrebbero notare caricamenti di pagina lenti o non riuscire ad accedere a parti di un sito web quando si verifica questo errore.

Soluzioni per il Problema di Timeout Upstream di Nginx

Regolazione delle Impostazioni di Timeout di Nginx

Per risolvere il problema di timeout upstream di Nginx, puoi modificare le impostazioni di timeout. Modifica la direttiva proxy_read_timeout nella configurazione di Nginx. Questa impostazione controlla quanto tempo Nginx attende una risposta dal server upstream. Aumentare questo valore dà al server upstream più tempo per rispondere prima che Nginx termini la connessione.

Puoi anche impostare le direttive proxy_connect_timeout e proxy_send_timeout. Il proxy_connect_timeout imposta quanto tempo Nginx attende per connettersi al server upstream. Il proxy_send_timeout imposta quanto tempo Nginx attende mentre invia una richiesta al server upstream.

Ottimizzazione delle Prestazioni del Server Backend

Puoi anche migliorare le prestazioni dei tuoi server backend. Inizia correggendo i tempi di risposta lenti dai server upstream. Ciò può includere l'ottimizzazione delle query del database, il caching dei dati o l'aggiunta di più risorse server per gestire carichi più elevati.

Rendere più veloci l'elaborazione delle API e di PHP può anche ridurre gli errori di timeout. Puoi utilizzare il caching opcode per PHP, migliorare il codice dell'applicazione e progettare le API in modo più efficiente. Questi passaggi possono portare a tempi di risposta più rapidi e meno problemi di timeout.

Risoluzione Avanzata dei Problemi per gli Errori del Controller Nginx

Indagare sui Problemi del Controller Ingress di Nginx

Quando affronti errori di timeout upstream di Nginx, controlla il Controller Ingress di Nginx. Esamina le recenti modifiche alla configurazione. Controlla i file di configurazione di Nginx per individuare modifiche che potrebbero causare il problema di timeout. Concentrati sulle impostazioni per i server upstream, il bilanciamento del carico e le configurazioni proxy.

Verifica lo stato del processo Nginx. Usa la riga di comando per vedere se il servizio Nginx è in esecuzione. Cerca messaggi di errore nei log di errore di Nginx che potrebbero spiegare il problema di timeout.

Risoluzione dei Trigger di Ricaricamento di Nginx

Ricaricamenti frequenti di Nginx possono portare a errori di timeout. Trova le cause di questi ricaricamenti controllando i log di sistema per identificare schemi o eventi che li attivano. Cause comuni includono modifiche alla configurazione, aggiornamenti dei certificati o distribuzioni automatizzate.

Per affrontare le necessità di ricaricamento del backend, rivedi il metodo di distribuzione dell'applicazione. Considera l'uso di aggiornamenti graduali o distribuzioni blue-green per ridurre i tempi di inattività e la necessità di frequenti ricaricamenti di Nginx. Inoltre, migliora i tuoi servizi backend per gestire le richieste più rapidamente, riducendo la possibilità di timeout durante i ricaricamenti.

Approcci Alternativi per Risolvere l'Errore di Timeout

Implementazione delle Impostazioni Keepalive di Nginx

Configurare keepalive_timeout in Nginx può aiutare a ridurre gli errori di timeout. Questa impostazione determina per quanto tempo Nginx mantiene aperte le connessioni inattive. Imposta un valore basato sulle esigenze del tuo server e sui modelli di traffico. Un punto di partenza tipico è 65 secondi:

keepalive_timeout 65;

L'utilizzo di proxy_http_version 1.1 e proxy_set_header connection aiuta a mantenere le connessioni tra Nginx e i server upstream. Aggiungi queste direttive alla tua configurazione Nginx:

proxy_http_version 1.1;
proxy_set_header Connection "";

Queste impostazioni consentono a Nginx di riutilizzare le connessioni, riducendo la creazione di nuove e possibilmente diminuendo gli errori di timeout.

Esame del Caricamento del Certificato SSL

Verificare la validità del certificato TLS è importante quando si risolvono problemi di timeout. Controlla che i tuoi certificati SSL siano aggiornati e installati correttamente. Usa OpenSSL per verificare la data di scadenza e la validità del certificato:

openssl x509 -in certificate.crt -text -noout

Se riscontri problemi di caricamento del certificato, controlla i log di errore di Nginx per errori relativi a SSL. Problemi comuni includono permessi di file errati, chiavi private non corrispondenti o catene di certificati incomplete. Assicurati che i file del certificato siano leggibili dal processo Nginx e che sia fornita l'intera catena del certificato, se necessario.

Per risolvere i problemi di caricamento del certificato:

  1. Verifica i permessi dei file relativi a SSL.
  2. Controlla che il certificato e la chiave privata corrispondano.
  3. Conferma che sia presente l'intera catena del certificato, se necessario.
  4. Rivedi le direttive di configurazione SSL di Nginx per individuare eventuali errori.