Vérification du port 80 : guide de dépannage HTTP

Guide de dépannage du port HTTP 80 avec connexions réseau, outils de diagnostic serveur et configuration de port

Vérifier si le port 80 est accessible te permet de savoir si ton serveur web répond en HTTP - le protocole utilisé par défaut par les navigateurs quand tu saisis une URL sans "https://". Si le port 80 est bloqué ou n'écoute pas, les visiteurs tombent sur des erreurs de connexion et ton site devient inaccessible. Voici comment diagnostiquer et corriger le problème.

À quoi sert réellement le port 80

Le port 80 est le port TCP par défaut pour HTTP (Hypertext Transfer Protocol) . Quand un navigateur se connecte à http://example.com , il cible automatiquement le port 80 sur l'adresse IP de ce serveur. Le logiciel serveur - Apache, Nginx, IIS, Caddy ou n'importe quel autre - doit écouter activement sur le port 80 pour que la connexion aboutisse.

Le port 80 est défini dans le registre officiel des ports de l'IANA et standardisé dans la RFC 9110. C'est un port "bien connu" : les numéros de 0 à 1023 sont réservés aux services système et nécessitent des privilèges élevés pour être utilisés sous Linux/macOS.

Comment vérifier si le port 80 est ouvert

Il existe plusieurs façons de vérifier si le port 80 est ouvert, selon que tu testes en local (depuis le serveur lui-même) ou à distance (depuis une autre machine ou depuis Internet).

Avec telnet

Telnet est le test manuel le plus rapide. Lance cette commande depuis n'importe quelle machine ayant accès réseau à l'hôte cible :

telnet example.com 80

Si le port 80 est ouvert et qu'un serveur web écoute, tu verras un curseur vide ou une bannière HTTP. S'il est fermé ou filtré, tu obtiendras un message "Connection refused" ou la commande restera bloquée jusqu'à l'expiration du délai.

Avec curl

curl fournit plus de détails - il affiche la réponse HTTP réelle :

curl -v http://example.com

Le flag -v affiche une sortie détaillée, incluant la poignée de main TCP et les en-têtes de réponse. Une connexion réussie affiche * Connected to example.com (93.184.216.34) port 80 . Un échec affiche curl: (7) Failed to connect .

Avec nmap

nmap est la référence en matière de scan de ports. Pour tester spécifiquement le port 80 :

nmap -p 80 example.com

Le résultat affichera l'un des trois états suivants : open (quelque chose écoute), closed (le port est joignable mais rien n'écoute), ou filtered (un pare-feu rejette les paquets et nmap ne peut pas déterminer l'état).

Filtered vs. Closed : "Filtered" signifie généralement qu'un pare-feu rejette silencieusement les paquets. "Closed" signifie que le serveur répond avec un TCP RST - le port est joignable mais aucun service n'y est lié. Ces deux cas nécessitent des corrections différentes.

Avec PowerShell sous Windows

Test-NetConnection -ComputerName example.com -Port 80

La commande Test-NetConnection de PowerShell retourne un résultat propre TcpTestSucceeded : True ou False , ce qui facilite l'intégration dans des scripts. Pour un guide complet sur la vérification des ports sous Windows, consulte la vérification des ports ouverts sous Windows .

Utiliser netstat pour inspecter le port 80

Quand tu es directement sur le serveur, netstat te montre exactement quel processus est lié au port 80. C'est l'outil adapté quand tu dois répondre à la question : "est-ce que quelque chose écoute réellement sur le port 80 de cette machine ?"

Linux / macOS

sudo netstat -tlnp | grep :80

Détail des options :

  • -t - connexions TCP uniquement
  • -l - sockets en écoute uniquement
  • -n - affiche les adresses numériques (plus rapide, évite les résolutions DNS)
  • -p - affiche le nom du processus et son PID

Un résultat typique ressemble à : tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1234/nginx . Cela indique que nginx (PID 1234) écoute sur toutes les interfaces sur le port 80.

Sur les systèmes Linux modernes, ss est plus rapide et préféré à netstat :

sudo ss -tlnp | grep :80

Windows

netstat -ano | findstr :80

Cette commande liste toutes les connexions sur le port 80 avec leur PID. Pour retrouver le nom du processus à partir du PID (par exemple, PID 4892) :

tasklist /fi "pid eq 4892"
Le port 80 est utilisé par un processus inattendu ? Sous Windows, "System" (PID 4) s'empare souvent du port 80 si IIS est installé et en cours d'exécution. Sous Linux, si un autre processus que ton serveur web occupe le port 80, ton serveur ne pourra pas démarrer et affichera une erreur "address already in use".

Diagnostiquer un port 80 bloqué par un pare-feu

Un blocage par pare-feu est la raison la plus fréquente pour laquelle le port 80 semble fermé depuis l'extérieur, même quand ton serveur web fonctionne correctement en local. Le blocage peut intervenir à trois niveaux :

Niveau Où vérifier Outil
Pare-feu OS (serveur) iptables / ufw (Linux), Pare-feu Windows Defender iptables -L -n ou règles du pare-feu Windows
Groupe de sécurité cloud AWS EC2 Security Groups, Azure NSG, GCP Firewall Rules Règles entrantes dans la console cloud
Pare-feu réseau/FAI ACL du routeur, blocage du port 80 par le FAI sur les connexions résidentielles Contacter le FAI ou utiliser un scanner de ports externe

Vérifier iptables sous Linux

sudo iptables -L INPUT -n -v | grep 80

Si tu vois une règle DROP ou REJECT pour le port 80, c'est là que se situe le problème. Pour autoriser le port 80 avec ufw :

sudo ufw allow 80/tcp
sudo ufw reload

Vérifier les groupes de sécurité AWS

Si ton serveur est sur EC2, rends-toi dans la console EC2 - Security Groups - Inbound rules. Tu dois avoir une règle autorisant le port TCP 80 depuis 0.0.0.0/0 (ou ta plage d'adresses IP spécifique). Sans cette règle, tout le trafic sur le port 80 est rejeté avant même d'atteindre le pare-feu de ton système d'exploitation.

Pour aller plus loin dans le diagnostic des ports côté Linux, le guide complet pour vérifier les ports ouverts sous Linux couvre iptables, ufw, firewalld et nftables en détail.

Port HTTP qui ne répond pas : causes fréquentes et solutions

Quand le port HTTP ne répond pas, le problème entre généralement dans l'une de ces catégories :

  • Serveur web arrêté - Vérifie avec systemctl status nginx ou systemctl status apache2 . S'il est arrêté, démarre-le : sudo systemctl start nginx .
  • Serveur web planté au démarrage - Consulte les journaux : sudo journalctl -u nginx --since "10 minutes ago" . Une erreur de syntaxe dans la configuration ou un conflit de port y sera consigné.
  • Serveur lié uniquement à localhost - Si la configuration de ton serveur indique listen 127.0.0.1:80 au lieu de listen 0.0.0.0:80 , il n'acceptera pas les connexions externes. Corrige l'adresse de liaison dans la configuration du serveur.
  • Port 80 déjà utilisé - Un autre processus a pris le port 80 avant le démarrage de ton serveur web. Utilise netstat pour l'identifier, puis arrête-le ou reconfigure l'un des services.
  • SELinux ou AppArmor bloque la liaison - Sur les systèmes RHEL/CentOS, SELinux peut empêcher un processus non standard de se lier au port 80. Vérifie ausearch -m AVC -ts recent pour les refus.
Vérification rapide : Lance curl http://127.0.0.1 directement sur le serveur. Si ça fonctionne mais que les connexions externes échouent, le problème vient d'un pare-feu ou d'une règle réseau - pas du serveur web lui-même.

Tester la connectivité du port 80 depuis l'extérieur de ton réseau

Tester depuis ta propre machine peut être trompeur - tu es peut-être sur le même LAN que le serveur, ce qui contourne les règles de pare-feu qui s'appliquent au trafic externe. Pour tester la connectivité du port 80 comme le ferait un vrai visiteur, tu as besoin d'un test externe.

Tu peux vérifier les en-têtes de réponse HTTP de ton serveur depuis l'extérieur grâce à notre outil de vérification des en-têtes HTTP . Il récupère les en-têtes de ton URL et affiche exactement ce qu'un navigateur reçoit - codes de statut, type de serveur, chaînes de redirections, et plus encore - depuis un point d'observation externe.

Autres options externes :

  • Scanners de ports en ligne - Des sites comme portchecker.co ou canyouseeme.org te permettent de saisir une adresse IP et un numéro de port pour tester depuis leurs serveurs.
  • Depuis un VPS ou un shell cloud - Lance une instance cloud en offre gratuite dans une région différente et exécute nc -zv your-server-ip 80 depuis là-bas.
  • Avec nc (netcat) en local - nc -zv example.com 80 donne un résultat ouvert/fermé rapide sans rien installer de supplémentaire sur la plupart des systèmes Linux/macOS.

Port 80 vs port 443 : quand chacun est utile

Le port 443 gère le HTTPS (HTTP chiffré via TLS). La plupart des sites modernes redirigent immédiatement tout le trafic du port 80 vers le port 443. Mais le port 80 reste important pour plusieurs raisons :

  • Challenges HTTP-01 ACME/Let's Encrypt - certbot de Let's Encrypt utilise le port 80 pour vérifier la propriété du domaine. Si le port 80 est bloqué, l'émission du certificat échoue.
  • Services internes sans TLS - De nombreux outils internes, agents de supervision et microservices communiquent en HTTP simple sur le port 80 au sein d'un réseau privé.
  • Clients anciens et appareils IoT - Certains appareils embarqués et clients plus anciens ne prennent pas en charge TLS et s'appuient sur le port 80.
  • Infrastructure de redirection - Même si tu sers tout en HTTPS, tu as besoin du port 80 ouvert pour intercepter et rediriger les requêtes HTTP plutôt que de laisser les utilisateurs face à une erreur de connexion.
Bonne pratique : Garde le port 80 ouvert mais configure ton serveur web pour émettre une redirection permanente 301 de HTTP vers HTTPS. Tu bénéficies ainsi de la sécurité de TLS tout en gardant le port 80 fonctionnel pour les redirections et les renouvellements de certificats.
Outil de vérification des en-têtes HTTP pour le diagnostic du port 80

Vois instantanément ce que le port 80 retourne réellement

Notre outil de vérification des en-têtes HTTP récupère la réponse en direct depuis n'importe quelle URL pour que tu puisses confirmer que le port 80 est ouvert, vérifier les chaînes de redirections et voir les codes de statut exacts renvoyés par ton serveur - sans ligne de commande.

Vérifier les en-têtes HTTP maintenant →

Sous Linux, lance sudo ss -tlnp | grep :80 ou sudo netstat -tlnp | grep :80 . Ces deux commandes affichent le nom du processus et le PID lié au port 80. Sous Windows, utilise netstat -ano | findstr :80 pour obtenir le PID, puis tasklist /fi "pid eq [PID]" pour trouver le nom du processus. Les occupants les plus courants sont nginx, apache2, IIS et les serveurs Node.js.

Utilise les mêmes commandes netstat ou ss mais filtre sur 8080 à la place : sudo ss -tlnp | grep :8080 sous Linux, ou netstat -ano | findstr :8080 sous Windows. Le port 8080 est un port HTTP alternatif courant utilisé par les serveurs de développement, Tomcat, Jenkins et les proxies. Si quelque chose y est déjà lié, tu devras l'arrêter ou configurer ton nouveau service sur un port différent.

Sur les serveurs web dédiés et les instances VPS, oui - le port 80 est généralement ouvert et attendu. Sur les connexions Internet résidentielles, de nombreux FAI bloquent le port 80 entrant pour empêcher les clients d'héberger des serveurs publics depuis leur domicile. Sur les instances cloud, le port 80 est souvent fermé par défaut dans le groupe de sécurité jusqu'à ce que tu ajoutes explicitement une règle entrante l'autorisant.

Depuis l'extérieur du serveur, utilise nmap -p 80 your-server-ip ou telnet your-server-ip 80 . Depuis le serveur lui-même, utilise ss -tlnp | grep :80 pour confirmer que quelque chose écoute. Vérifie aussi tes règles de pare-feu - sous Linux avec ufw, lance sudo ufw status pour voir si le port 80 est listé comme autorisé.

Sous Linux avec ufw : sudo ufw allow 80/tcp . Avec iptables directement : sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT . Sous Windows, ajoute une règle entrante dans le Pare-feu Windows Defender pour le port TCP 80. Sur un serveur cloud, ajoute une règle entrante dans ton groupe de sécurité ou ton groupe de sécurité réseau autorisant le port TCP 80 depuis la plage source souhaitée.

Le port 80 est ouvert quand un serveur web est configuré pour servir du trafic HTTP, ce qui est la norme pour tout site web accessible au public. Il reste également ouvert sur les serveurs qui redirigent le HTTP vers le HTTPS (port 443), car la redirection elle-même nécessite d'accepter la connexion initiale sur le port 80. Les outils de renouvellement de certificats comme certbot de Let's Encrypt exigent aussi le port 80 pour les challenges de validation de domaine HTTP-01.

Ouvre le Pare-feu Windows Defender avec sécurité avancée, clique sur "Règles de trafic entrant", puis sur "Nouvelle règle". Choisis "Port", sélectionne TCP, entre 80 comme port local spécifique, choisis "Autoriser la connexion", applique à tous les profils (Domaine, Privé, Public) et donne un nom à la règle. Tu peux aussi lancer cette commande dans une invite PowerShell avec élévation de privilèges : New-NetFirewallRule -DisplayName "HTTP Port 80" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow .

Oui, sous Linux et macOS, le port 80 est un port privilégié (les ports 0-1023 nécessitent les droits root ou la capacité CAP_NET_BIND_SERVICE pour être liés). Cela signifie qu'un processus utilisateur ordinaire ne peut pas écouter sur le port 80 sans permissions élevées. Les serveurs web comme nginx et Apache sont généralement démarrés en tant que root pour se lier au port 80, puis passent à un utilisateur avec moins de privilèges pour le traitement des requêtes. Sous Windows, il n'existe pas de restriction équivalente pour le port 80.

Le port 80 (HTTP) est utilisé à la place du port 443 (HTTPS) dans les cas où TLS est inutile ou peu pratique - par exemple pour des microservices internes sur un réseau privé de confiance, des environnements de développement local, ou des appareils IoT sans prise en charge de TLS. Le port 80 est aussi requis pour les challenges de certificats HTTP-01 de Let's Encrypt. Pour tout site public, le port 443 avec TLS est fortement recommandé, le port 80 restant ouvert uniquement pour les redirections.

Non, ce sont deux ports différents. Le port 80 est le standard HTTP assigné par l'IANA et utilisé automatiquement par les navigateurs quand aucun port n'est spécifié. Le port 8000 est une alternative non officielle couramment utilisée par les serveurs de développement - le serveur de développement de Python avec python -m http.server utilise 8000 par défaut, tout comme le serveur de développement de Django. Pour accéder à un service sur le port 8000, tu dois le spécifier explicitement dans l'URL : http://example.com:8000 .