Port 80 Check: HTTP-Fehlerbehebungs-Guide

HTTP-Port-80-Fehlerbehebung mit Netzwerkverbindungen, Server-Diagnosetools und Port-Konfiguration in digitaler Tech-Illustration

Mit einem Port-80-Check prüfst du, ob dein Webserver über HTTP erreichbar ist - das Protokoll, das Browser standardmäßig verwenden, wenn du eine URL ohne "https://" eingibst. Ist Port 80 blockiert oder lauscht kein Dienst darauf, bekommen Besucher Verbindungsfehler und deine Website ist nicht erreichbar. Hier erfährst du genau, wie du das Problem diagnostizierst und behebst.

Was Port 80 eigentlich macht

Port 80 ist der Standard-TCP-Port für HTTP (Hypertext Transfer Protocol) . Wenn ein Browser eine Verbindung zu http://example.com aufbaut, spricht er automatisch Port 80 der IP-Adresse dieses Servers an. Die Serversoftware - Apache, Nginx, IIS, Caddy oder eine andere - muss aktiv auf Port 80 lauschen, damit diese Verbindung zustande kommt.

Port 80 ist im offiziellen IANA-Portregister eingetragen und in RFC 9110 standardisiert. Er gehört zu den sogenannten "Well-Known Ports" - Ports im Bereich 0-1023 sind für systemnahe Dienste reserviert und erfordern unter Linux/macOS erhöhte Berechtigungen zum Binden.

Wie du prüfst, ob Port 80 offen ist

Es gibt mehrere Möglichkeiten, Port 80 zu prüfen - je nachdem, ob du lokal (direkt auf dem Server) oder remote (von einem anderen Rechner oder aus dem Internet) testest.

Mit telnet

Telnet ist der schnellste manuelle Test. Führe diesen Befehl von einem beliebigen Rechner mit Netzwerkzugang zum Zielhost aus:

telnet example.com 80

Wenn Port 80 offen ist und ein Webserver lauscht, siehst du einen leeren Cursor oder ein HTTP-Banner. Ist er geschlossen oder gefiltert, erhältst du "Connection refused" oder der Befehl hängt bis zum Timeout.

Mit curl

curl liefert mehr Details - du siehst die tatsächliche HTTP-Antwort:

curl -v http://example.com

Das Flag -v gibt eine ausführliche Ausgabe aus, einschließlich TCP-Handshake und Antwort-Headern. Eine erfolgreiche Verbindung zeigt * Connected to example.com (93.184.216.34) port 80 . Ein Fehler zeigt curl: (7) Failed to connect .

Mit nmap

nmap ist der Goldstandard beim Port-Scanning. Um gezielt Port 80 zu testen:

nmap -p 80 example.com

Das Ergebnis zeigt einen von drei Zuständen: open (ein Dienst lauscht), closed (Port ist erreichbar, aber kein Dienst lauscht) oder filtered (eine Firewall verwirft Pakete und nmap kann den Zustand nicht bestimmen).

Filtered vs. Closed: "Filtered" bedeutet in der Regel, dass eine Firewall Pakete still verwirft. "Closed" bedeutet, dass der Server mit einem TCP RST antwortet - der Port ist erreichbar, aber kein Dienst ist daran gebunden. Beide Fälle erfordern unterschiedliche Lösungen.

Mit PowerShell unter Windows

Test-NetConnection -ComputerName example.com -Port 80

PowerShells Test-NetConnection gibt ein sauberes TcpTestSucceeded : True oder False zurück, was sich gut für Skripte eignet. Eine vollständige Anleitung zur Port-Prüfung unter Windows findest du im Artikel offene Ports unter Windows prüfen .

Port 80 mit netstat untersuchen

Wenn du direkt auf dem Server arbeitest, zeigt dir netstat genau, welcher Prozess an Port 80 gebunden ist. Das ist das richtige Werkzeug, wenn du wissen möchtest: "Lauscht auf diesem Rechner überhaupt etwas auf Port 80?"

Linux / macOS

sudo netstat -tlnp | grep :80

Erklärung der Flags:

  • -t - nur TCP-Verbindungen
  • -l - nur lauschende Sockets
  • -n - numerische Adressen anzeigen (schneller, überspringt DNS-Lookups)
  • -p - Prozessname und PID anzeigen

Eine typische Ausgabe sieht so aus: tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1234/nginx . Das bedeutet, nginx (PID 1234) lauscht auf allen Interfaces auf Port 80.

Auf modernen Linux-Systemen ist ss schneller und wird gegenüber netstat bevorzugt:

sudo ss -tlnp | grep :80

Windows

netstat -ano | findstr :80

Dieser Befehl listet alle Verbindungen mit Port 80 und deren PID auf. Um den Prozessnamen anhand der PID zu ermitteln (z. B. PID 4892):

tasklist /fi "pid eq 4892"
Port 80 wird von einem unerwarteten Prozess belegt? Unter Windows belegt oft "System" (PID 4) Port 80, wenn IIS installiert und aktiv ist. Unter Linux schlägt der Start deines Webservers mit dem Fehler "address already in use" fehl, wenn ein anderer Prozess Port 80 bereits belegt hat.

Port 80 durch Firewall blockiert - Diagnose

Eine Firewall-Blockierung ist der häufigste Grund, warum Port 80 von außen geschlossen erscheint, obwohl der Webserver lokal einwandfrei läuft. Die Blockierung kann auf drei Ebenen auftreten:

Ebene Wo prüfen Werkzeug
OS-Firewall (Server) iptables / ufw (Linux), Windows Defender Firewall iptables -L -n oder Windows-Firewallregeln
Cloud-Sicherheitsgruppe AWS EC2 Security Groups, Azure NSG, GCP Firewall Rules Eingehende Regeln in der Cloud-Konsole
Netzwerk-/ISP-Firewall Router-ACL, ISP-seitige Port-Blockierung für Privatanschlüsse ISP kontaktieren oder externen Port-Scanner verwenden

iptables unter Linux prüfen

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

Siehst du eine DROP- oder REJECT-Regel für Port 80, ist das der Übeltäter. Um Port 80 mit ufw freizugeben:

sudo ufw allow 80/tcp
sudo ufw reload

AWS Security Groups prüfen

Wenn dein Server auf EC2 läuft, gehe in der EC2-Konsole zu Security Groups - Inbound rules. Du benötigst eine Regel, die TCP-Port 80 von 0.0.0.0/0 (oder deinem spezifischen IP-Bereich) erlaubt. Ohne diese Regel wird der gesamte Port-80-Traffic verworfen, bevor er überhaupt deine OS-Firewall erreicht.

Einen tieferen Einblick in die Port-Diagnose auf Linux-Seite bietet der vollständige Leitfaden zum Prüfen offener Ports unter Linux - mit detaillierter Behandlung von iptables, ufw, firewalld und nftables.

HTTP-Port antwortet nicht: Ursachen und Lösungen

Wenn der HTTP-Port nicht antwortet, lässt sich das Problem einer dieser Kategorien zuordnen:

  • Webserver läuft nicht - Prüfe mit systemctl status nginx oder systemctl status apache2 . Falls er gestoppt ist, starte ihn: sudo systemctl start nginx .
  • Webserver ist beim Start abgestürzt - Prüfe die Logs: sudo journalctl -u nginx --since "10 minutes ago" . Ein Konfigurationsfehler oder ein Port-Konflikt wird dort protokolliert.
  • Server ist nur an localhost gebunden - Wenn deine Serverkonfiguration listen 127.0.0.1:80 statt listen 0.0.0.0:80 angibt, werden keine externen Verbindungen akzeptiert. Korrigiere die Bind-Adresse in deiner Serverkonfiguration.
  • Port 80 bereits belegt - Ein anderer Prozess hat Port 80 belegt, bevor dein Webserver gestartet ist. Identifiziere ihn mit netstat und stoppe ihn oder konfiguriere einen der Dienste auf einen anderen Port um.
  • SELinux oder AppArmor blockiert das Binden - Auf RHEL/CentOS-Systemen kann SELinux verhindern, dass ein nicht standardmäßiger Prozess Port 80 belegt. Prüfe ausearch -m AVC -ts recent auf Ablehnungen.
Schnelle Überprüfung: Führe curl http://127.0.0.1 direkt auf dem Server aus. Wenn das funktioniert, externe Verbindungen aber fehlschlagen, liegt das Problem an einer Firewall- oder Netzwerkregel - nicht am Webserver selbst.

Port-80-Erreichbarkeit von außen testen

Tests vom eigenen Rechner können irreführend sein - du befindest dich möglicherweise im selben LAN wie der Server und umgehst dabei Firewallregeln, die für externen Traffic gelten. Um Port 80 so zu testen, wie es ein echter Besucher erleben würde, brauchst du einen externen Test.

Du kannst die HTTP-Antwort-Header deines Servers von außen mit unserem HTTP-Header-Checker-Tool abrufen. Es holt die Header von deiner URL und zeigt dir genau, was ein Browser empfängt - Statuscodes, Servertyp, Weiterleitungsketten und mehr - alles aus externer Perspektive.

Weitere externe Optionen:

  • Online-Port-Scanner - Dienste wie portchecker.co oder canyouseeme.org ermöglichen es dir, eine IP und Portnummer einzugeben und von deren Servern aus zu testen.
  • Von einem VPS oder einer Cloud-Shell - Starte eine kostenlose Cloud-Instanz in einer anderen Region und führe dort nc -zv your-server-ip 80 aus.
  • Mit nc (netcat) lokal - nc -zv example.com 80 liefert ein schnelles offen/geschlossen-Ergebnis, ohne dass auf den meisten Linux/macOS-Systemen etwas zusätzlich installiert werden muss.

Port 80 vs. Port 443: Wann welcher zählt

Port 443 ist für HTTPS zuständig (verschlüsseltes HTTP über TLS). Die meisten modernen Websites leiten den gesamten Port-80-Traffic sofort auf Port 443 um. Dennoch bleibt Port 80 aus mehreren Gründen relevant:

  • ACME/Let's Encrypt HTTP-01-Challenges - Let's Encrypts certbot verwendet Port 80, um den Domain-Besitz zu verifizieren. Ist Port 80 blockiert, schlägt die Zertifikatsausstellung fehl.
  • Interne Dienste ohne TLS - Viele interne Tools, Monitoring-Agenten und Microservices kommunizieren innerhalb eines privaten Netzwerks über einfaches HTTP auf Port 80.
  • Legacy-Clients und IoT-Geräte - Manche eingebetteten Geräte und ältere Clients unterstützen kein TLS und sind auf Port 80 angewiesen.
  • Weiterleitungsinfrastruktur - Auch wenn du alles über HTTPS auslieferst, musst du Port 80 offen halten, um HTTP-Anfragen abzufangen und weiterzuleiten - andernfalls erhalten Nutzer einen Verbindungsfehler.
Empfohlene Vorgehensweise: Halte Port 80 offen, konfiguriere deinen Webserver aber so, dass er eine permanente 301-Weiterleitung von HTTP auf HTTPS ausgibt. So profitierst du von der Sicherheit durch TLS, während Port 80 für Weiterleitungen und Zertifikatserneuerungen funktionsfähig bleibt.
HTTP-Header-Checker-Tool zur Port-80-Fehlerbehebung

Sieh sofort, was Port 80 tatsächlich zurückgibt

Unser HTTP-Header-Checker ruft die Live-Antwort von jeder URL ab, damit du bestätigen kannst, dass Port 80 offen ist, Weiterleitungsketten prüfen und die genauen Statuscodes sehen kannst, die dein Server sendet - ganz ohne Kommandozeile.

HTTP-Header jetzt prüfen →

Unter Linux führe sudo ss -tlnp | grep :80 oder sudo netstat -tlnp | grep :80 aus. Beide Befehle zeigen den Prozessnamen und die PID, die an Port 80 gebunden sind. Unter Windows nutze netstat -ano | findstr :80 , um die PID zu ermitteln, und dann tasklist /fi "pid eq [PID]" , um den Prozessnamen zu finden. Typische Belegungen sind nginx, apache2, IIS und Node.js-Server.

Verwende dieselben netstat- oder ss-Befehle, filtere aber nach 8080 statt 80: sudo ss -tlnp | grep :8080 unter Linux oder netstat -ano | findstr :8080 unter Windows. Port 8080 ist ein verbreiteter alternativer HTTP-Port, der von Entwicklungsservern, Tomcat, Jenkins und Proxys genutzt wird. Wenn dort bereits etwas gebunden ist, musst du es stoppen oder deinen neuen Dienst auf einen anderen Port konfigurieren.

Auf dedizierten Webservern und VPS-Instanzen ja - Port 80 ist dort typischerweise offen und erwartet. Bei privaten Internetanschlüssen blockieren viele ISPs eingehenden Port-80-Traffic, um zu verhindern, dass Kunden öffentliche Server von zu Hause aus betreiben. Bei Cloud-Instanzen ist Port 80 in der Sicherheitsgruppe oft standardmäßig geschlossen, bis du explizit eine eingehende Regel hinzufügst, die ihn freigibt.

Von außerhalb des Servers verwende nmap -p 80 your-server-ip oder telnet your-server-ip 80 . Direkt auf dem Server nutze ss -tlnp | grep :80 , um zu bestätigen, dass etwas lauscht. Prüfe außerdem deine Firewallregeln - unter Linux mit ufw führe sudo ufw status aus, um zu sehen, ob Port 80 als erlaubt aufgeführt ist.

Unter Linux mit ufw: sudo ufw allow 80/tcp . Direkt mit iptables: sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT . Unter Windows füge in der Windows Defender Firewall eine eingehende Regel für TCP-Port 80 hinzu. Auf einem Cloud-Server füge in deiner Sicherheitsgruppe oder Netzwerksicherheitsgruppe eine eingehende Regel hinzu, die TCP-Port 80 aus dem gewünschten Quellbereich erlaubt.

Port 80 ist offen, wenn ein Webserver so konfiguriert ist, dass er HTTP-Traffic bedient - was der Standard für jede öffentlich zugängliche Website ist. Er bleibt auch auf Servern offen, die HTTP auf HTTPS (Port 443) umleiten, da die Weiterleitung selbst das Annehmen der initialen Port-80-Verbindung erfordert. Zertifikatserneuerungstools wie Let's Encrypt certbot benötigen Port 80 außerdem für HTTP-01-Domain-Validierungschallenges.

Öffne die Windows Defender Firewall mit erweiterter Sicherheit, klicke auf "Eingehende Regeln" und dann auf "Neue Regel". Wähle "Port", wähle TCP, gib 80 als spezifischen lokalen Port ein, wähle "Verbindung zulassen", wende die Regel auf alle Profile an (Domäne, Privat, Öffentlich) und vergib einen Namen für die Regel. Alternativ führe folgenden Befehl in einer erhöhten PowerShell-Eingabeaufforderung aus: New-NetFirewallRule -DisplayName "HTTP Port 80" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow .

Ja, unter Linux und macOS ist Port 80 ein privilegierter Port (Ports 0-1023 erfordern Root-Rechte oder die Capability CAP_NET_BIND_SERVICE zum Binden). Das bedeutet, ein normaler Benutzerprozess kann ohne erhöhte Berechtigungen nicht auf Port 80 lauschen. Webserver wie nginx und Apache werden typischerweise als Root gestartet, um Port 80 zu belegen, und wechseln dann für die eigentliche Anfrageverarbeitung zu einem Benutzer mit niedrigeren Rechten. Unter Windows gibt es keine vergleichbare Einschränkung für Port 80.

Port 80 (HTTP) wird anstelle von Port 443 (HTTPS) in Szenarien eingesetzt, in denen TLS nicht notwendig oder praktikabel ist - etwa bei internen Microservices in einem vertrauenswürdigen privaten Netzwerk, lokalen Entwicklungsumgebungen oder IoT-Geräten ohne TLS-Unterstützung. Port 80 ist außerdem für Let's Encrypt HTTP-01-Zertifikatschallenges erforderlich. Für jede öffentlich zugängliche Website wird Port 443 mit TLS dringend empfohlen, während Port 80 nur für Weiterleitungen offen gehalten werden sollte.

Nein, es sind unterschiedliche Ports. Port 80 ist der von der IANA zugewiesene Standard für HTTP und wird von Browsern automatisch verwendet, wenn kein Port angegeben ist. Port 8000 ist ein inoffizieller alternativer Port, der häufig von Entwicklungsservern genutzt wird - Pythons python -m http.server verwendet standardmäßig Port 8000, ebenso wie Djangos Entwicklungsserver. Um einen Dienst auf Port 8000 zu erreichen, musst du ihn in der URL explizit angeben: http://example.com:8000 .