ERR_CONNECTION_REFUSED : le serveur refuse la connexion
· 6 min de lecture
Ce que signifie l'erreur
Le navigateur a trouvé l'adresse du serveur, a demandé une connexion sur le port 443 (ou 80), et le serveur a répondu « non » : un paquet TCP de réinitialisation, envoyé quand aucun programme n'écoute sur ce port. Chrome affiche ERR_CONNECTION_REFUSED (« Ce site est inaccessible »), Firefox « La connexion a échoué », Safari « Safari ne parvient pas à se connecter au serveur ».
Ce n'est ni un délai dépassé (aucune réponse : pare-feu qui jette les paquets, serveur éteint), ni un DNS_PROBE_FINISHED_NXDOMAIN (le nom ne se résout pas). Une connexion refusée signifie : la machine tourne, mais le serveur web est arrêté, écoute sur un autre port ou une autre adresse, ou un pare-feu rejette au lieu d'ignorer.
Causes fréquentes
- Le serveur web est arrêté. nginx ou Apache a planté, n'a pas redémarré après une modification de configuration, ou a été stoppé par une mise à jour. Le cas le plus fréquent.
- Mauvaise adresse ou mauvais port. Après une modification des lignes
listen, nginx n'écoute plus que sur127.0.0.1ou seulement en IPv4, alors que le DNS pointe aussi vers une adresse IPv6. - Un pare-feu rejette le port.
ufw,firewalldou un groupe de sécurité cloud avec une règlerejectpour 80/443. - Un nouveau serveur sans serveur web. Le DNS pointe déjà vers la nouvelle IP, mais nginx n'y tourne pas encore.
- HTTPS pas configuré. Le port 80 répond, rien n'écoute sur 443, et le navigateur (ou une entrée HSTS) exige HTTPS.
- Causes locales chez le visiteur. Un proxy mort, un VPN, la « protection web » d'un antivirus, une ligne dans le fichier hosts, une extension de navigateur.
Si vous êtes visiteur
- Essayez le site en fenêtre privée et dans un autre navigateur, pour écarter extensions et cache.
- Désactivez un proxy manuel que vous n'utilisez pas, et coupez brièvement le VPN et la protection web de l'antivirus.
- Videz le cache DNS (
sudo dscacheutil -flushcachesur macOS,sudo resolvectl flush-cachessur Linux) : il garde peut-être l'ancienne adresse d'un site qui a déménagé. - Essayez
http://au lieu dehttps://; si cela passe, le HTTPS du site est cassé et le propriétaire doit le réparer.
Si c'est votre site : vérifier d'abord
Lancez le Site down checker. « Connexion refusée » depuis l'extérieur confirme que le serveur lui-même rejette. Connectez-vous ensuite en SSH ; que SSH réponde pendant que le site refuse est déjà un indice : le serveur tourne, pas le serveur web.
# le serveur web tourne-t-il ?
systemctl status nginx
systemctl status apache2
# qu'est-ce qui écoute sur 80 et 443 ?
sudo ss -tlnp | grep -E ':80 |:443 '
# règles du pare-feu
sudo ufw status verbose
sudo firewall-cmd --list-all
Si ss n'affiche rien sur 443, le serveur web est arrêté ou pas configuré pour ce port. S'il affiche 127.0.0.1:443 au lieu de 0.0.0.0:443, il n'écoute qu'en local.
Solutions sur votre propre serveur
1. Démarrer le serveur web, et lire pourquoi il était arrêté
sudo systemctl start nginx
systemctl status nginx
sudo journalctl -u nginx -n 50
S'il ne démarre pas, c'est presque toujours :
bind() to 0.0.0.0:80 failed (98: Address already in use): un autre programme occupe le port (Apache et nginx tous les deux installés, ou un ancien processus).sudo ss -tlnp | grep :80le nomme.[emerg] unknown directiveouunexpected "}": une erreur de syntaxe.sudo nginx -tindique le fichier et la ligne.cannot load certificate: un certificat supprimé ou renouvelé vers un autre chemin. Comparez les lignesssl_certificateavec le disque.- Un disque plein :
df -h,df -i.
Apache : sudo apachectl configtest, puis sudo journalctl -u apache2 -n 50. AH00558 n'est qu'un avertissement, pas la cause.
Toujours tester avant de recharger, et recharger plutôt que redémarrer :
sudo nginx -t && sudo systemctl reload nginx
sudo apachectl configtest && sudo systemctl reload apache2
2. Écouter sur la bonne adresse
Le bloc server de nginx doit écouter en IPv4 et en IPv6 :
listen 80;
listen [::]:80;
listen 443 ssl;
listen [::]:443 ssl;
Si le DNS a un enregistrement AAAA mais que le serveur n'écoute pas en IPv6, les visiteurs en IPv6 sont refusés alors que les autres passent. Écoutez en IPv6, ou supprimez l'enregistrement AAAA.
3. Ouvrir le pare-feu
# ufw
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# firewalld
sudo firewall-cmd --permanent --add-service=http --add-service=https
sudo firewall-cmd --reload
Sur un serveur cloud, vérifiez aussi le groupe de sécurité chez le fournisseur ; une règle à cet endroit est invisible depuis le serveur.
4. Configurer HTTPS si seul le port 80 répond
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com
Certbot ajoute le bloc 443 et la redirection. Vérifiez ensuite la chaîne avec le SSL Checker.
5. Après un déménagement de serveur
Installez, configurez et démarrez le serveur web sur la nouvelle machine avant de modifier le DNS. Sinon, repointez le DNS vers l'ancien serveur jusqu'à ce que le nouveau soit prêt.
Si le problème vient de votre hébergeur
En hébergement mutualisé, une connexion refusée signifie : le serveur web de l'hébergeur est tombé, ou il vous a déplacé vers une nouvelle IP sans mettre le DNS à jour. Envoyez :
Bonjour, mon site example.com renvoie « connexion refusée » sur les ports 80 et 443 depuis environ 20 h 15 (UTC). Le domaine se résout vers 203.0.113.10. Rien n'a été modifié de mon côté. Le serveur web de cette machine est-il en panne, ou mon site a-t-il été déplacé vers une autre adresse ?
Pour que cela ne se reproduise pas
Une connexion refusée, c'est presque toujours un serveur web arrêté, et un service arrêté est exactement ce qu'une vérification du site depuis l'extérieur remarque aussitôt. Sur votre propre serveur, l'agent serveur vous alerte quand nginx ou Apache s'arrête, et l'intervention rapide le redémarre si son test de configuration réussit, à prix fixe, 24 h/24. Configuration cassée ? L'intervention approfondie la répare.
Et maintenant
Vérifier depuis l'extérieur
Le site est-il down pour tout le monde ou seulement pour vous, et que répond le serveur ? Gratuit, sans inscription.
Site down checkerEn panne ? Nous intervenons.
Sur votre propre serveur ou sur un hébergement mutualisé avec accès SSH : intervention rapide à prix fixe pour les causes fréquentes, intervention approfondie facturée par tranches de 15 minutes pour tout le reste, 24 h/24. Prix affiché avant la commande.
Demander un dépannageAutres guides
- Site inaccessible : que faire dans les 15 premières minutes
- Serveur en panne : que vérifier en premier, et dans quel ordre
- Erreur 500 Internal Server Error : trouver la cause dans les logs et remettre le site en ligne
- Erreur 502 Bad Gateway : trouver la cause et la corriger
- Erreur 503 : surcharge, maintenance ou limite d'hébergement ?
- Erreur 504 Gateway Timeout : trouver ce qui ralentit
- Erreur 521 et 522 Cloudflare : votre serveur d'origine ne répond pas
- DNS_PROBE_FINISHED_NXDOMAIN : le domaine ne répond plus
- Ce que signifie « Votre connexion n'est pas privée » et comment la corriger