Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
Warum kann ich keine Verbindung zu einer Website herstellen, die auf meiner EC2 Instance gehostet wird?
Ich kann keine Verbindung zu einer öffentlichen Website herstellen, die auf meiner Amazon Elastic Compute Cloud (Amazon EC2)-Instance gehostet wird.
Kurzbeschreibung
Um den Fehler einer nicht erreichbaren Website zu beheben, überprüfe, ob die Konfigurationseinstellungen auf deiner EC2-Instance korrekt sind. Wenn deine Instance beispielsweise nicht über die richtigen DNS-Konfigurationen verfügt, kannst du zu keiner Website, die auf dieser Instance gehostet wird, eine Verbindung herstellen.
Lösung
Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.
Verwende SSH oder SSM Session Manager, um eine Verbindung zur Instance herzustellen. Wenn keine der Methoden verfügbar ist, verwende die serielle EC2-Konsole, um eine Verbindung zu Instances herzustellen, die auf dem Nitro-System erstellt wurden.
Prüfen, ob die Instance ausgeführt wird und beide Statusprüfungen bestanden hat
Stelle sicher, dass die Instance in der Amazon-EC2-Konsole ausgeführt wird. Wenn du ein Problem mit der Statusprüfung hast, befolge die Schritte unter Warum ist meine EC2-Linux-Instance nicht erreichbar und besteht die Statusprüfungen nicht? Prüfe, ob die Instance korrekt gestartet wird. Weitere Informationen findest du unter Ausgabe der Instance-Konsole oder Screenshot einer nicht erreichbaren Instance aufnehmen.
Überprüfe die Systemprotokolle der Instance auf Startfehler.
Verwende die folgenden Methoden, um nach Startfehlern zu suchen:
- Wenn du einen Kernel-Panikfehler erhältst, findest du weitere Informationen unter Wie behebe ich den Fehler „Kernel panic – not syncing“ bei EC2-Instances?
- Informationen zu anderen Betriebssystemfehlern findest du unter Wie behebe ich Probleme mit einer EC2-Linux-Instance, welche die Instance-Statusprüfung aufgrund von Betriebssystemproblemen nicht bestanden hat?
Überprüfung der Sicherheitsgruppen- und Netzwerk-ACL-Konfiguration der Instance
Verwende die folgenden Methoden, um die Konfiguration der Instance zu überprüfen:
- Stelle sicher, dass die der Instance zugeordnete Sicherheitsgruppe und die Netzwerk-ACL den Datenverkehr auf den Ports 80 und 443 zulassen.
- Stelle sicher, dass die Routing-Tabelle im Subnetz der Instance eine Standardroute zu einem Internet-Gateway hat.
Sicherstellen, dass die Instance die richtige DNS-Konfiguration hat
Verwende die folgenden Methoden, um die Konfiguration der Instance zu überprüfen:
- Wenn die Website den Route 53-DNS-Service verwendet, überprüfe, ob du die DNS-Datensätze korrekt konfiguriert hast.
- Stelle sicher, dass der Instance eine Elastic IP-Adresse zugewiesen ist. Wenn du die Instance anhältst und startest, ist die Elastic IP-Adresse immer noch der Instance zugeordnet.
- Stelle sicher, dass du die öffentliche IP-Adresse oder Elastic IP-Adresse einem A-Datensatz zuweist.
Stelle sicher, dass der Webserver läuft und dass keine Firewalls auf Betriebssystemebene den Zugriff auf Ports blockieren
Netzwerkports sind die Kommunikationsendpunkte, an die verschiedene Dienste Anfragen senden. Diese Anfragen beinhalten Verbindungsanfragen der Benutzer zur Website. Webserver warten auf Port 80 auf HTTP-Verkehr und verwenden Port 443 für mit TLS/SSL verschlüsselten Verkehr. Wenn der Webserver nicht läuft oder Firewalls diese Ports blockieren, können Benutzer keine Verbindung zu deiner Website herstellen. Gehe wir folgt vor:
-
Um zu überprüfen, ob die Website lokal läuft, führe den folgenden Befehl auf der EC2-Instance Hosting-Website aus:
curl https://localhost
-oder-
curl http://localhost:443
Hinweis: Wenn du bei der Verwendung von curl auf Probleme stößt, überprüfe, ob es Probleme mit dem Webhosting-Server der Instance gibt. Überprüfe auch die Anwendungskonfiguration in der Instance.
Stelle über SSH, SSM Session Manager oder die serielle EC2-Konsole eine Verbindung zur Instance her. -
Überprüfe den Servicestatus des Webservers.
Führe für RHEL-, CentOS-, Fedora- und Amazon Linux-Systeme den Befehl systemctl status httpd aus, um den Status des Webservers zu überprüfen. Der Befehl gibt Informationen zurück, dass der Webserver inaktiv ist:$ sudo systemctl status httpd.service The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled) Active: inactive (dead)
Verwende bei Debian- oder Ubuntu-Systemen den Befehl systemctl status apache2, um den Status des Webservers zu überprüfen. Der Webserver muss Port 80 oder 443 überwachen. Der Befehl gibt Informationen zurück, dass der Webserver inaktiv ist:
$ sudo systemctl status apache2.service The Apache HTTP ServerLoaded: loaded (/lib/systemd/system/apache2.service; disabled; vendor preset: disabled) Active: inactive (dead)
-
Führe die folgenden Befehle aus, um den Webserver zu starten und den Service so zu aktivieren, dass er beim Booten gestartet wird:
Bei RHEL-, CentOS-, Fedora- und Amazon Linux-Systemen:$ sudo systemctl start httpd; sudo systemctl enable httpd
Bei Debian- oder Ubuntu-Systemen:
$ sudo systemctl start apache2; sudo systemctl enable apache2
-
Stelle sicher, dass der Webserver-Service ausgeführt wird und aktiviert ist:
Führe bei RHEL-, CentOS-, Fedora- und Amazon Linux-Systemen den folgenden Befehl aus:$ sudo systemctl status httpd.service The Apache HTTP ServerLoaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)Active: active (running)
Führe bei Debian- oder Ubuntu-Systemen den folgenden Befehl aus:
$ sudo systemctl status apache2.service The Apache HTTP ServerLoaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)Active: active (running)
Hinweis: Führe bei Linux-Systemen, auf denen SystemV ausgeführt wird, den folgenden Befehl aus, um den Status des Webservers zu überprüfen.
Bei Debian- oder Ubuntu-Systemen musst du httpd durch apache2 ersetzen:$ sudo service httpd statushttpd is stopped
Führe den folgenden Befehl aus, um einen angehaltenen Webserver-Service auf SystemV zu starten:
$ sudo service httpd start Starting httpd: [ OK ]
-
Führe den folgenden Befehl aus, um dich zu vergewissern, dass der Webserver auf Port 80 oder 443 auf eingehende Verbindungsanforderungen von Benutzern lauscht:
$ sudo netstat -tulpn | grep -iP 'httpd|apache2' tcp 0 0 :::80 :::* LISTEN 2961/httpd
Hinweis: Wenn mehrere Schnittstellen laufen, stelle sicher, dass der Webserver auf allen IP-Adressen lauscht, und führe dann den folgenden Befehl aus:
cat /etc/httpd/conf/httpd.conf | grep Listen
Im Folgenden findest du Beispielausgaben:
Listen *:80
-oder-
Listen *:443
-
Überprüfe den Status von Firewalls auf Betriebssystemebene. Wenn du eine aktive Firewall findest, stelle sicher, dass sie Anforderungen an den Ports 80 und 443 zulässt.
(Optional) Führe den folgenden Befehl aus, um zu überprüfen, ob die iptables-Regeln eingehende Anforderungen an den Ports 80 und 443 blockieren:$ sudo iptables -vnL Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 35 10863 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Die Ausgabe des vorherigen IPTables-Befehls zeigt, dass nur ICMP, localhost und Port 22 / TCP (SSH) zulässig sind. Dies bedeutet, dass eingehende Verbindungen zu Port 80 / TCP und 443/TCP blockiert oder abgelehnt werden.
Führe den folgenden Befehl aus, damit Port 80 und 443 eingehende HTTP- und HTTPS-Verbindungsanforderungen akzeptieren können:$ iptables -I INPUT -p tcp --match multiport --dports 80,443 -j ACCEPT
Die folgende Ausgabe zeigt, dass die Multiport-Regel den Webserver-Service-Ports 80/TCP und 443/TCP hinzugefügt wird.
Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 80,443 486 104K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Für Amazon Linux 2023, Amazon Linux 2 und RHEL 7 und höher
Führe den folgenden Befehl aus, um zu überprüfen, ob der firewalld-Service ausgeführt wird:
$ sudo firewall-cmd --staterunning
Wenn der firewalld-Service ausgeführt wird, führe die folgenden Befehle aus, um Verbindungen auf den Ports 80/TCP und 443/TCP zuzulassen. Der letzte Befehl im Beispiel lädt den Service neu, um die neu hinzugefügten Regeln in Kraft zu setzen:
$ sudo firewall-cmd --add-service=http --permanent success $ sudo firewall-cmd --add-service=https --permanent success $ sudo firewall-cmd --reload success
Für Debian- und Ubuntu-Server
Gehe wir folgt vor:
-
Führe den folgenden Befehl aus, um nach einer Uncomplicated Firewall (UFW) zu suchen:
$ sudo ufw status verbose Status: active
-
Wenn eine UFW ausgeführt wird, verwende den folgenden Befehl, um eingehende Verbindungsanforderungen auf den Ports 80/TCP und Port 443/ zuzulassen:
$ sudo ufw allow in 80/tcp Rule added Rule added (v6) $ sudo ufw allow 443/tcp Rule added Rule added (v6)
Überprüfe die Protokolle mit Webserver-Zugriffsfehlern auf Probleme. Webserver-Protokolle befinden sich unter /var/log. Im Folgenden sind die Standardspeicherorte für Webserver-Protokolle aufgeführt:
- Amazon Linux und RHEL: /var/log/httpd
- Debian und Ubuntu: /var/log/apache2
Hinweis: Der Speicherort des Webserver-Protokolls hängt von deiner Serverkonfiguration ab.
Ähnliche Informationen
Wie behebe ich langsame Verbindungen zu einer Website, die auf meiner EC2 Instance gehostet wird?
Ähnliche Videos

