ERR_CONNECTION_REFUSED: il server rifiuta la connessione
· 6 min di lettura
Cosa significa l’errore
Il browser ha trovato l’indirizzo del server, ha chiesto una connessione sulla porta 443 (o 80) e il server ha risposto “no”: un pacchetto TCP di reset, quello che parte quando nessun programma è in ascolto su quella porta. Chrome mostra ERR_CONNECTION_REFUSED sotto “Impossibile raggiungere il sito”, Firefox “Impossibile connettersi”, Safari “Safari non può connettersi al server”.
Non è un ERR_CONNECTION_TIMED_OUT (nessuna risposta: un firewall che scarta i pacchetti o una macchina spenta), né un DNS_PROBE_FINISHED_NXDOMAIN (il nome non si risolve). Una connessione rifiutata significa: la macchina funziona, ma il server web è fermo, ascolta su un’altra porta o su un altro indirizzo, oppure un firewall rifiuta invece di ignorare.
Cause frequenti
- Il server web è fermo. nginx o Apache è andato in crash, non è ripartito dopo una modifica alla configurazione o è stato fermato da un aggiornamento. Il caso più frequente.
- Indirizzo o porta sbagliati. Dopo una modifica alle righe
listen, nginx ascolta solo su127.0.0.1o solo in IPv4, mentre il DNS punta anche a un indirizzo IPv6. - Un firewall rifiuta la porta.
ufw,firewalldo un gruppo di sicurezza cloud con una regolarejectper la 80 e la 443, spesso dopo che qualcuno ha “blindato” il server. - Un server nuovo senza server web. Il DNS punta già al nuovo IP, ma lì nginx non è ancora installato o avviato.
- HTTPS non configurato. La porta 80 risponde, sulla 443 non ascolta nessuno e il browser (o una voce HSTS) pretende HTTPS.
- Cause locali del visitatore. Un proxy morto, una VPN, la “protezione web” di un antivirus, una riga nel file hosts, un’estensione del browser.
Se sei un visitatore
- Prova il sito in una finestra in incognito e in un altro browser, per escludere estensioni e cache.
- Controlla le impostazioni del proxy: su Windows “Impostazioni proxy”, su macOS Rete > Avanzate > Proxy. Disattiva un proxy manuale che non usi.
- Spegni per un momento VPN e protezione web dell’antivirus.
- Svuota la cache DNS (
ipconfig /flushdnssu Windows,sudo dscacheutil -flushcachesu macOS,sudo resolvectl flush-cachessu Linux): forse conserva il vecchio indirizzo di un sito che ha traslocato. - Prova una volta
http://al posto dihttps://; se così entra, l’HTTPS del sito è rotto e deve sistemarlo il proprietario.
Se è il tuo sito: verificare prima
Apri il Website down checker. “Connessione rifiutata” dall’esterno conferma che è proprio il server a rifiutare. Poi entra via SSH; già il fatto che SSH risponda mentre il sito rifiuta è un indizio: la macchina funziona, il server web no.
# il server web è in funzione?
systemctl status nginx
systemctl status apache2
# cosa ascolta sulla 80 e sulla 443?
sudo ss -tlnp | grep -E ':80 |:443 '
# regole del firewall
sudo ufw status verbose
sudo firewall-cmd --list-all
sudo nft list ruleset | grep -E 'dport (80|443)'
Se ss non mostra nulla sulla 443, il server web è fermo o non è configurato per quella porta. Se mostra 127.0.0.1:443 invece di 0.0.0.0:443 o *:443, ascolta solo in locale.
Soluzioni sul tuo server
1. Avviare il server web e leggere perché era fermo
sudo systemctl start nginx
systemctl status nginx
sudo journalctl -u nginx -n 50
Se non parte, quasi sempre è uno di questi casi:
bind() to 0.0.0.0:80 failed (98: Address already in use): un altro programma occupa la porta (Apache e nginx installati insieme, o un vecchio processo).sudo ss -tlnp | grep ':80 'lo nomina; ferma quello che non vuoi.[emerg] unknown directiveounexpected "}": un errore di sintassi in un file di configurazione.sudo nginx -tindica file e riga.cannot load certificate: un certificato eliminato o rinnovato in un altro percorso. Confronta le righessl_certificatecon quello che c’è sul disco.Too many open fileso un disco pieno:df -h,df -i.
Apache: sudo apachectl configtest, poi sudo journalctl -u apache2 -n 50. Valgono le stesse categorie; AH00558 (could not determine server name) è solo un avviso, non la causa.
Prova sempre prima di ricaricare, e quando puoi ricarica invece di riavviare:
sudo nginx -t && sudo systemctl reload nginx
sudo apachectl configtest && sudo systemctl reload apache2
2. Ascoltare sull’indirizzo giusto
Il blocco server di nginx deve ascoltare in IPv4 e in IPv6:
listen 80;
listen [::]:80;
listen 443 ssl;
listen [::]:443 ssl;
Se il DNS ha un record AAAA ma il server non ascolta in IPv6 (o non ha connettività IPv6), i visitatori con IPv6 vengono rifiutati e gli altri entrano. Ascolta in IPv6 oppure elimina l’AAAA.
3. Aprire il firewall
# ufw (Debian/Ubuntu)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# firewalld (famiglia RHEL)
sudo firewall-cmd --permanent --add-service=http --add-service=https
sudo firewall-cmd --reload
Su un server cloud controlla anche il gruppo di sicurezza o il firewall di rete nel pannello del provider: una regola lì è invisibile dall’interno del server.
4. Configurare HTTPS se risponde solo la porta 80
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com
Certbot crea il blocco 443 e il reindirizzamento. Controlla poi la catena con l’SSL checker.
5. Dopo un trasloco del server
Installa il server web sulla macchina nuova, configuralo per il dominio e avvialo prima di cambiare il DNS. Se l’hai già cambiato: installalo e avvialo adesso, oppure riporta il record sul vecchio server finché il nuovo non è pronto.
Se il problema è presso il tuo provider di hosting
Su un hosting condiviso, una connessione rifiutata significa: il server web del provider è caduto, oppure ti ha spostato su un nuovo IP senza aggiornare il DNS. Invia questo messaggio:
Buongiorno, il mio sito example.com restituisce “connessione rifiutata” sulle porte 80 e 443 da circa le 20:15 (UTC). Il dominio si risolve a 203.0.113.10. Da parte mia non ho modificato nulla. Il server web di quella macchina è fermo, oppure il mio sito è stato spostato su un altro indirizzo?
Perché non succeda di nuovo
Una connessione rifiutata è quasi sempre un server web fermo, e un servizio fermo è proprio quello che un controllo della porta e un controllo del sito dall’esterno notano entro un minuto. Sul tuo server, l’agente server ti avvisa quando nginx o Apache si ferma, prima ancora che un visitatore se ne accorga.
Down? Interveniamo. Sul tuo server o su un hosting condiviso con accesso SSH, il Quick Fix riavvia il server web se il suo test di configurazione riesce, a prezzo fisso, 24 ore su 24, anche nel fine settimana, senza che nessuno debba collegarsi alle 3 di notte. Configurazione rotta? Il Deep Fix la ripara, a blocchi di 15 minuti; la stima è il prezzo massimo.
E adesso
Verifica dall’esterno
Il sito è down per tutti o solo per te, e cosa risponde il server? Gratis, senza registrazione.
Website down checkerDown? Interveniamo.
Sul tuo server o su un hosting condiviso con accesso SSH: Quick Fix a prezzo fisso per le cause più comuni, Deep Fix fatturato a blocchi di 15 minuti per tutto il resto, 24/7. Prezzo visibile prima dell’ordine.
Ordina un interventoAltre guide
- Sito non raggiungibile: cosa fare nei primi 15 minuti
- Server down o non raggiungibile: cosa controllare e in che ordine
- Errore 500 Internal Server Error: trovare la causa nei log e rimettere online il sito
- Errore 502 Bad Gateway: trovare la causa e risolverlo
- Errore 503: sovraccarico, manutenzione o limite dell’hosting?
- Errore 504 Gateway Timeout: trovare cosa rallenta
- Errore 521 e 522 di Cloudflare: il server di origine non risponde
- DNS_PROBE_FINISHED_NXDOMAIN: il dominio non risponde più
- ERR_CONNECTION_TIMED_OUT: il server non risponde in tempo
- Cosa significa “La connessione non è privata” e come risolverlo
- ERR_SSL_PROTOCOL_ERROR: la connessione sicura fallisce prima del certificato
- ERR_TOO_MANY_REDIRECTS: trovare il ciclo di reindirizzamenti e chiuderlo
- Errore 403 Forbidden: cosa blocca l’accesso al tuo sito