Perché un proxy inverso restituisce un errore 502 dopo la ricostruzione di un container?

Eva Wong è la Technical Writer e smanettatrice residente di ZimaSpace. Una geek da sempre con una passione per homelab e software open-source, si specializza nel tradurre concetti tecnici complessi in guide accessibili e pratiche. Eva crede che l'auto-ospitare debba essere divertente, non intimidatorio. Attraverso i suoi tutorial, dà potere alla comunità di demistificare le configurazioni hardware, dalla costruzione del loro primo NAS al dominio dei container Docker.

Un proxy inverso restituisce un errore 502 dopo la ricostruzione di un container quando non riesce più ad aprire una connessione valida verso l’upstream ricostruito.

La ricostruzione può sostituire il container, assegnare un nuovo indirizzo, scollegare o rinominare una rete Docker, modificare la porta esposta, ripristinare una configurazione incompleta oppure avviare il proxy prima che l’applicazione sia pronta. La diagnosi corretta inizia dal log degli errori del proxy e segue l’indirizzo upstream esatto dal proxy al container, invece di riavviare entrambi i servizi finché l’errore non scompare temporaneamente.

Conferma che l’errore 502 derivi da un problema di connessione all’upstream

Richiedi una volta il dominio interessato e annota il timestamp, lo stato del proxy, l’indirizzo upstream e il messaggio di errore completo. Distingui tra connessione rifiutata, host non trovato, timeout, connessione reimpostata, errore durante l’handshake TLS e risposta non valida.

Un errore 502 indica che il proxy non ha ricevuto una risposta upstream utilizzabile, ma il dettaglio dell’errore determina se la destinazione era assente, irraggiungibile, non in ascolto oppure utilizzava il protocollo sbagliato. Un’attuale guida alla risoluzione dei problemi di NGINX osserva che la ricostruzione di un container può lasciare il proxy a utilizzare un vecchio indirizzo backend finché la risoluzione dei nomi o la configurazione non vengono aggiornate.

Testa direttamente l’applicazione dall’host del proxy o dal container del proxy usando il nome upstream, l’indirizzo, la porta e il protocollo registrati nel log. Se la richiesta diretta fallisce allo stesso modo, concentra l’indagine sul percorso tra proxy e container, senza modificare il DNS pubblico o i certificati.

Confronta la destinazione upstream prima e dopo la ricostruzione

Controlla il nome del container ricostruito, il nome del servizio, l’IP interno, la porta esposta, la porta pubblicata, gli alias di rete e le reti collegate. Confrontali con la configurazione del proxy e con l’ultima destinazione funzionante.

Un problema di nginx-proxy descrive una ricostruzione che ha modificato l’IP del container applicativo mentre il proxy continuava a inviare le richieste all’upstream del container irraggiungibile. Il dominio pubblico era corretto, mentre era cambiata soltanto l’identità dell’upstream privato.

Preferisci un nome stabile del servizio Compose o un alias di rete all’IP del container. Se l’IP è assegnato intenzionalmente in modo fisso, verifica che il servizio ricostruito lo abbia effettivamente ricevuto e che nessun altro container possieda ora quell’indirizzo.

Verifica che il proxy e l’app condividano ancora una rete Docker

Elenca le reti collegate al proxy e all’applicazione e conferma che condividano almeno una rete definita dall’utente. La pubblicazione di una porta sull’host non rende automaticamente raggiungibile il nome del container da un’altra rete Docker isolata.

Un caso di rete Docker ha rilevato che lo spostamento di un servizio dipendente sulla rete appropriata ha eliminato immediatamente le risposte 502 ricorrenti, dimostrando come un percorso upstream irraggiungibile possa causare problemi anche quando tutti i container sono ancora in esecuzione.

Collega i servizi tramite Compose invece di usare comandi isolati, così la relazione sopravvive alle ricostruzioni. Testa la risoluzione DNS e la porta upstream dall’interno del container del proxy dopo aver ricreato lo stack.

-15% OFF

Controlla la porta di ascolto interna e l’indirizzo di binding

Conferma che l’applicazione sia in ascolto sulla porta utilizzata dal proxy e su un indirizzo raggiungibile dalla rete dei container. Non confondere una porta pubblicata sull’host con la porta di ascolto interna del container.

Un proxy può connettersi solo dopo che l’app è associata a un indirizzo diverso dal loopback. Un servizio in ascolto su 127.0.0.1 all’interno del proprio container non è disponibile per il proxy, anche quando un comando di controllo locale ha esito positivo.

Controlla il log dell’applicazione, l’elenco dei socket e una richiesta diretta dal container del proxy. Se la porta rifiuta le connessioni, correggi il listener o la configurazione dell’app prima di aggiungere tentativi o timeout del proxy più lunghi.

Attendi che l’applicazione sia pronta invece di limitarti all’avvio del container

Un container ricostruito può essere in esecuzione mentre le migrazioni, il ripristino del database, il riscaldamento della cache o la generazione della configurazione impediscono ancora all’applicazione di accettare richieste. Confronta il timestamp del primo errore 502 con i log di stato e di avvio.

Una discussione sulla risoluzione dei problemi di Grist mostra come l’architettura Docker, le impostazioni dell’ambiente e la disponibilità dell’upstream possano combinarsi e causare errori 502 persistenti sul lato container dopo una ricostruzione.

Aggiungi un controllo dello stato significativo e fai in modo che il proxy o i servizi dipendenti attendano l’operazione necessaria ai client, non la semplice esistenza di un processo. Mantieni i tentativi entro limiti definiti, così un’app permanentemente non funzionante non sembrerà un avvio lento.

Aggiorna la risoluzione del proxy e ricostruisci il percorso stabile

Ricarica o ricrea il proxy dopo aver corretto il nome del servizio, la rete, la porta e lo stato di salute. Se il proxy risolve i nomi solo all’avvio, configura la risoluzione in esecuzione supportata oppure un ordine di riavvio prevedibile.

Il flusso di lavoro di ZimaSpace per isolare una dipendenza del container non funzionante fornisce la diagnosi complementare quando l’upstream si arresta ripetutamente invece di rimanere in buono stato.

La riparazione è completa solo quando il proxy risolve il nome del servizio dopo un’ulteriore ricostruzione, raggiunge la porta interna prevista, attende il completamento dell’avvio e serve il dominio senza modifiche manuali agli IP. Dopo la convalida, rimuovi le destinazioni temporanee con IP diretto e i collegamenti di rete non documentati.

Supporto e consigli

Altro da leggere

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.