ECONNREFUSED (errno 111)

errno 111

LINUX

Messaggio ufficiale (come appare sullo schermo): Connection refused

Cercato anche come: Connection refused, errno 111, connect ECONNREFUSED, ECONNREFUSED 127.0.0.1

Terminale Linux che esegue strace con la chiamata di sistema non riuscita e l'errno evidenziati
errno di Linux: individua la chiamata di sistema che fallisce prima di modificare qualsiasi cosa.

Che cosa significa

ECONNREFUSED, «Connection refused» (errno 111 su Linux, 61 su macOS), significa che l'host di destinazione ha risposto ma nessun programma accetta connessioni su quella porta. Node.js lo mostra come 'connect ECONNREFUSED 127.0.0.1:5432'. Il servizio non è in esecuzione, è in ascolto altrove oppure un firewall rifiuta la connessione.

Si applica a: Linux, macOS (errno BSD), WSL, Container Docker

Come risolvere ECONNREFUSED (errno 111)

  1. Assicurati che il servizio sia in esecuzione ('systemctl status <service>', 'docker ps')
  2. Controlla indirizzo e porta di ascolto sul server con 'sudo ss -ltnp'; un database associato a 127.0.0.1 rifiuta i client remoti
  3. In Docker, 'localhost' all'interno di un container è il container stesso; usa il nome del servizio di docker-compose oppure 'host.docker.internal' per raggiungere l'host
  4. Se 'localhost' non funziona ma '127.0.0.1' sì (o viceversa), il server è in ascolto solo su IPv4 o solo su IPv6
  5. Controlla le regole REJECT del firewall ('sudo iptables -L -n' oppure 'sudo nft list ruleset')
  6. Se il servizio si avvia lentamente, aggiungi tentativi ripetuti o un'attesa di disponibilità prima di connetterti

Perché succede

Il kernel remoto ha risposto con un RST perché nessun socket è in ascolto su quell'indirizzo/porta, oppure una regola del firewall l'ha rifiutata attivamente. Le cause abituali sono servizi arrestati, porte errate, binding solo su loopback e confusione sulla rete dei container.

Domande frequenti

Perché la mia app ottiene ECONNREFUSED verso il database in Docker?

All'interno di un container, 'localhost' punta al container stesso. Connettiti invece al nome del servizio del container del database.

Errori correlati

Fonte: Linux kernel errno.h · soluzioni scritte e verificate dalla redazione (vedi la nostra politica editoriale)

Ultimo aggiornamento: