Sleezr
Télécharger
ERR_CONNECTION_REFUSED sur un domaine du fichier hosts : solutions

ERR_CONNECTION_REFUSED sur un domaine du fichier hosts : solutions

É
Équipe Sleezr
··4 min de lecture

Votre domaine personnalisé dans le fichier hosts renvoie ERR_CONNECTION_REFUSED ? Vérifiez le port, le binding 0.0.0.0 vs 127.0.0.1, Docker et le reverse proxy.

L'erreur ERR_CONNECTION_REFUSED sur un domaine défini dans le fichier hosts signifie que la résolution IP a réussi, mais qu'aucun serveur n'écoute sur le port cible à cette adresse. Votre ordinateur a bien converti le nom de domaine en adresse IP (par exemple 127.0.0.1), mais la tentative de connexion TCP a été immédiatement rejetée par le système.

Comment corriger ERR_CONNECTION_REFUSED sur un domaine du fichier hosts

Pour corriger ERR_CONNECTION_REFUSED sur un domaine du fichier hosts, vérifiez d'abord que votre serveur local est démarré sur le port demandé, précisez le numéro de port dans l'URL (ex: http://monapp.test:3000), liez votre serveur à 0.0.0.0 plutôt qu'à localhost, et assurez-vous que votre conteneur Docker publie bien ses ports vers la machine hôte.

Comprendre la mécanique de l'erreur

Le fichier hosts associe exclusivement un nom d'hôte à une adresse IP. Il ne traite jamais les numéros de ports ni les protocoles.

TEXT
# Configuration valide dans /etc/hosts :
127.0.0.1  api.local.test

# Syntaxes invalides (ignorées ou provoquant des erreurs) :
127.0.0.1:3000 api.local.test
http://127.0.0.1 api.local.test

Lorsque vous saisissez http://api.local.test dans votre navigateur :

1
Le système consulte le fichier hosts et résout api.local.test vers 127.0.0.1.
2
Le navigateur tente une connexion TCP sur le port HTTP standard (port 80) ou HTTPS (port 443).
3
Si votre application Node.js ou Next.js écoute sur le port 3000 et qu'aucun reverse proxy ne tourne sur le port 80, le système d'exploitation renvoie un paquet TCP RST : le navigateur affiche ERR_CONNECTION_REFUSED.

Consultez aussi notre guide complet sur la syntaxe du fichier hosts pour valider votre formatage.

Tableau de diagnostic rapide

Symptôme constatéCause racineAction corrective
http://monapp.test échoue, mais http://monapp.test:3000 fonctionneAucun reverse proxy n'écoute sur le port 80Configurer Nginx/Caddy ou taper le port dans l'URL
localhost:3000 fonctionne, mais monapp.test:3000 échoueServeur lié à IPv6 (::1) alors que hosts est en IPv4Lier à 0.0.0.0 ou ajouter ::1 monapp.test
Échec uniquement dans un conteneur DockerPort non mappé dans docker-compose.ymlAjouter la directive ports: - "80:80"
Échec immédiat en HTTPS (https://monapp.test)Aucun service TLS n'écoute sur le port 443Mettre en place un proxy local avec SSL

1. Spécifier le numéro de port dans votre navigateur

Si votre serveur de développement tourne sur un port spécifique (3000 pour Next.js, 5173 pour Vite, 8080 pour Webpack) :

  • Ne saisissez pas : http://api.local.test
  • Saisissez : http://api.local.test:3000 ou http://api.local.test:5173

2. Identifier les processus en écoute

Vérifiez si votre application écoute bien sur le port attendu :

Sur macOS et Linux :

BASH
sudo lsof -nP -iTCP:80 -sTCP:LISTEN
sudo lsof -nP -iTCP:3000 -sTCP:LISTEN

Sur Windows (PowerShell en mode Administrateur) :

POWERSHELL
Get-NetTCPConnection -LocalPort 80,3000 -State Listen | Select-Object LocalAddress, LocalPort, OwningProcess

Si la commande sur votre port applicatif ne renvoie rien, votre serveur de développement n'est pas lancé.

3. Corriger le binding IP (127.0.0.1 vs 0.0.0.0 vs ::1)

De nombreux outils modernes lient par défaut le serveur de développement à localhost (qui résout souvent en IPv6 ::1). Si votre fichier hosts ne contient que la ligne IPv4 :

TEXT
127.0.0.1 api.local.test

La connexion tentée en IPv4 est rejetée si le serveur n'écoute qu'en IPv6.

Pour résoudre ce conflit :

  • Liez votre serveur à toutes les interfaces réseau (0.0.0.0) :
  • Vite : vite --host 0.0.0.0
  • Next.js : next dev -H 0.0.0.0
  • Node/Express : app.listen(3000, '0.0.0.0')
  • Ou déclarez les deux protocoles dans votre fichier hosts :

``text 127.0.0.1 api.local.test ::1 api.local.test ``

Pour aller plus loin sur cette distinction, lisez notre comparatif 0.0.0.0 vs 127.0.0.1 et 127.0.0.1 vs localhost.

4. Mettre en place un reverse proxy local (Caddy ou Nginx)

Pour accéder à vos domaines personnalisés sans devoir ajouter :3000 à chaque fois, utilisez un reverse proxy local comme Caddy.

Exemple de configuration dans un fichier Caddyfile :

TEXT
api.local.test {
    reverse_proxy 127.0.0.1:3000
}

Lancez ensuite caddy run. Caddy écoute automatiquement sur les ports 80 et 443 et transfère le trafic vers votre serveur Node.js.

5. Vérifier les ports dans Docker

Si vous travaillez avec Docker, le conteneur doit explicitement publier son port vers l'hôte :

YAML
services:
  web:
    image: nginx:alpine
    ports:
      - "80:80"
      - "443:443"

Consultez aussi notre guide Docker et fichier hosts.

6. Vider le pool de sockets du navigateur

Google Chrome et Microsoft Edge maintiennent des connexions socket en mémoire qui peuvent conserver l'état d'échec :

1
Ouvrez chrome://net-internals/#sockets dans votre navigateur.
2
Cliquez sur le bouton Flush socket pools.
3
Videz le cache DNS navigateur sur chrome://net-internals/#dns.
4
Rechargez votre page avec Cmd+Shift+R (Mac) ou Ctrl+F5 (Windows/Linux).
À lire aussiLocalhost n'autorise pas la connexion : guide complet
À lire aussiQue faire quand le fichier hosts ne fonctionne pas ?
Partager cet article

Questions fréquentes

La résolution DNS a fonctionné, mais aucun processus n’écoute sur le port demandé (80 pour HTTP ou 443 pour HTTPS) à l’adresse IP ciblée (souvent 127.0.0.1).

Non. Le standard du fichier hosts associe uniquement une adresse IP à un nom d’hôte. Les ports sont gérés par votre serveur web, votre reverse proxy ou l’URL dans votre navigateur.

Votre serveur écoute peut-être uniquement sur l’interface IPv6 (::1) ou le port n’est pas spécifié dans la barre d’adresse pour le domaine personnalisé.

Utilisez la commande curl -v http://mondomaine.test:PORT ou vérifiez les processus en écoute avec lsof -iTCP:PORT -sTCP:LISTEN sur Mac/Linux.

Articles similaires

4 min de lecture
Node.jsDockerDNS

getaddrinfo ENOTFOUND dans Docker et Node.js : solutions

getaddrinfo ENOTFOUND ou EAI_AGAIN malgré une entrée dans /etc/hosts ? Résolvez l’isolation DNS Docker, le binding Node.js et les erreurs libc.

É

Équipe Sleezr

Outils développeurs

4 min de lecture
localhostdépannageERR_CONNECTION_REFUSED

Localhost n’autorise pas la connexion : comment corriger

Corrigez « localhost n’autorise pas la connexion » (ERR_CONNECTION_REFUSED) dans Chrome, sous Windows, Mac, XAMPP et VS Code : serveur, port, IPv6 vs IPv4, fichier hosts, pare-feu.

É

Équipe Sleezr

Outils développeurs

3 min de lecture
localhostdépannageERR_CONNECTION_REFUSED

Corriger « Ce site est inaccessible » sur localhost

Corrigez « Ce site est inaccessible » / ERR_CONNECTION_REFUSED sur localhost : serveur lancé, bon port, IPv6 vs IPv4, fichier hosts et pare-feu. Checklist pas à pas.

É

Équipe Sleezr

Outils développeurs

9 min de lecture
Dockerfichier hostsmacOS

Fichier hosts et Docker sur Mac

Configurez le fichier hosts avec Docker et docker-compose sur Mac : domaines locaux, réseaux Docker et bonnes pratiques.

S

Sleezr Team

4 min de lecture
Node.jsfichier hostspermissions

EACCES: permission denied sur /etc/hosts : comment corriger

Corrigez l’erreur EACCES permission denied sur /etc/hosts en Node.js, bash et sous Windows. Droits root, sudoers, scripts CLI et solutions sécurisées.

É

Équipe Sleezr

Outils développeurs