ECONNREFUSED (errno 111)
errno 111
Messaggio ufficiale (come appare sullo schermo): Connection refused
Cercato anche come: Connection refused, errno 111, connect ECONNREFUSED, ECONNREFUSED 127.0.0.1
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)
- Assicurati che il servizio sia in esecuzione ('systemctl status <service>', 'docker ps')
- Controlla indirizzo e porta di ascolto sul server con 'sudo ss -ltnp'; un database associato a 127.0.0.1 rifiuta i client remoti
- 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
- Se 'localhost' non funziona ma '127.0.0.1' sì (o viceversa), il server è in ascolto solo su IPv4 o solo su IPv6
- Controlla le regole REJECT del firewall ('sudo iptables -L -n' oppure 'sudo nft list ruleset')
- 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: