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 Probleme mit nicht erreichbaren Websites zu lösen, stelle sicher, dass du die Website-Konfiguration der EC2-Instance korrekt konfiguriert hast. Falsche Webservereinstellungen auf der Instance blockieren den Zugriff auf alle darauf gehosteten Websites.
Lösung
Sicherstellen, dass die Instance ausgeführt wird und beide Statusüberprüfungen besteht
Überprüfe die Amazon EC2-Konsole, um sicherzustellen, dass die Instance ausgeführt wird. Informationen zur Behebung von Problemen mit der Statusüberprüfung findest du unter Warum ist meine EC2-Linux-Instance nicht erreichbar und besteht ihre Statusprüfungen nicht?
Verwende außerdem die Konsolenausgabe der Instance und einen Screenshot der Instance, um zu überprüfen, ob die Instance korrekt bootet.
Überprüfung der Sicherheitsgruppen- und Netzwerk-ACL-Konfiguration der Instance
Überprüfe die folgenden Instance-Konfigurationen:
- Die zugehörige Sicherheitsgruppe und die Netzwerk-Zugriffssteuerungsliste (Netzwerk-ACL) ermöglichen den Datenverkehr auf den Ports 80 und 443.
- Die Routing-Tabelle im Subnetz der Instance hat eine Standardroute zu einem Internet-Gateway.
Sicherstellen, dass die Website die richtige DNS-Konfiguration hat
Überprüfe die folgenden DNS-Konfigurationen für die Website:
- Wenn die Website den Amazon Route 53-DNS-Service verwendet, hast du die DNS-Datensätze korrekt konfiguriert.
- Du hast der Instance eine Elastic IP-Adresse zugewiesen.
Hinweis: Die Elastic IP-Adresse bleibt auch dann der Instance zugeordnet, wenn du die Instance beendest und startest. - Du hast die öffentliche IP-Adresse oder Elastic IP-Adresse einem A-Datensatz zugeordnet.
Sicherstellen, dass der Webserver ausgeführt wird und dass keine Betriebssystem-Firewalls den Zugriff auf Ports blockieren
Gehe wie folgt vor, um die Netzwerkportkonfiguration und den Webserver zu überprüfen:
-
Verwende SSH oder Session Manager, eine Funktion von AWS Systems Manager, um eine Verbindung zur Instance herzustellen. Wenn du SSH oder Session Manager nicht verwenden kannst, um eine Verbindung zu Instances herzustellen, die auf dem AWS Nitro System erstellt wurden, verwende die serielle EC2-Konsole.
-
Um zu überprüfen, ob die Website lokal ausgeführt wird, führe den folgenden Befehl auf der EC2-Instance-Host-Website aus:
curl https://localhost
-oder-
curl http://localhost:443
Hinweis: Wenn du bei der Verwendung von curl auf Probleme stößt, suche nach Problemen mit dem Webserver und der Anwendungskonfiguration der Instance.
-
Um den Service-Status des Webservers zu überprüfen, führe je nach Betriebssystem, das du ausführst, den folgenden Befehl aus.
Red Hat Enterprise Linux (RHEL), CentOS, Fedora und Amazon Linux:sudo systemctl status httpd.service
Beispielausgabe:
The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled) Active: inactive (dead)
Debian und Ubuntu:
sudo systemctl status apache2.service
Beispielausgabe:
The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; disabled; vendor preset: disabled) Active: inactive (dead)
Prüfe in der Befehlsausgabe, ob der Status inactive (dead) (inaktiv (tot)) ist.
Wenn auf dem Linux-System System V ausgeführt wird, führe den folgenden Befehl aus, um den Webserverstatus zu überprüfen:sudo service httpd status
Hinweis: Wenn du Debian oder Ubuntu ausführst, ersetze httpd durch apache2.
Beispielausgabe:httpd is stopped
-
Um den Webserver zu starten und den Service so einzustellen, dass er beim Booten gestartet wird, führe je nach Betriebssystem die folgenden Befehle aus:
RHEL, CentOS, Fedora und Amazon Linux:sudo systemctl start httpd; sudo systemctl enable httpd
Debian oder Ubuntu:
sudo systemctl start apache2; sudo systemctl enable apache2
-
Um zu überprüfen, ob der Webserver-Service ausgeführt wird und aktiviert ist, führe je nach Betriebssystem die folgenden Befehle aus:
RHEL, CentOS, Fedora und Amazon Linux:sudo systemctl status httpd.service
Beispielausgabe:
The Apache HTTP ServerLoaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) Active: active (running)
Debian oder Ubuntu:
sudo systemctl status apache2.service
Beispielausgabe:
The Apache HTTP ServerLoaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Active: active (running)
Führe den folgenden Befehl aus, um einen gestoppten Webserverservice für Systeme zu starten, die auf System V ausgeführt werden:
sudo service httpd start
Beispielausgabe:
Starting httpd: [ OK ]
-
Führe den folgenden Befehl aus, um zu bestätigen, dass der Webserver auf eingehende Benutzerverbindungsanforderungen wartet:
sudo netstat -tulpn|grep -i :80 tcp6 0 0 :::80 :::* LISTEN 11993/httpd
Hinweis: Führe den vorherigen Befehl zweimal aus. Ersetze beim zweiten Mal 80 durch 443. Webserver lauschen auf Port 80 auf HTTP-Datenverkehr und auf Port 443 auf mit TLS/SSL-verschlüsselten Datenverkehr.
Wenn du mehrere Schnittstellen ausführst, führe den folgenden Befehl aus, um zu bestätigen, dass der Webserver auf allen IP-Adressen lauscht:cat /etc/httpd/conf/httpd.conf | grep Listen
Beispielausgaben:
Listen *:80
Listen *:443
-
Wenn du eine Betriebssystem-Firewall verwendest, 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 Anforderungen des eingehenden Datenverkehrs an den Ports 80 und 443 zulassen:
sudo iptables -vnL
Beispielausgabe:
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
In der vorherigen Beispielausgabe lassen die Regeln nur Internet Control Message Protocol (ICMP), localhost und Port 22/TCP (SSH) zu. Die Regeln blockieren eingehende Datenverkehrs-Verbindungen zum TCP-Port 80 oder 443.
-
Führe den folgenden Befehl aus, um die iptables-Regeln so zu konfigurieren, dass Port 80 und 443 HTTP- und HTTPS-Verbindungsanforderungen für eingehenden Datenverkehr akzeptieren können:
iptables -I INPUT -p tcp --match multiport --dports 80,443 -j ACCEPT
Beispielausgabe:
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
Überprüfe die Konfigurationen für AL2023, AL2 und RHEL 7 und höher
Führe für Amazon Linux 2023 (AL2023)-, Amazon Linux 2 (AL2)- und RHEL-Instances den folgenden Befehl aus, um zu überprüfen, ob der firewalld-Service ausgeführt wird:
sudo firewall-cmd --state
Beispielausgabe:
running
Wenn der firewalld-Service ausgeführt wird, führe die folgenden Befehle aus, um Verbindungen an den TCP-Ports 80 und 443 zuzulassen:
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent
sudo firewall-cmd --reload
Hinweis: Wenn du zuvor Regeln hinzugefügt hast, lädt der Befehl reload den Service neu und die Regeln werden wirksam.
Stelle für jeden Befehl sicher, dass die Ausgabe dem folgenden Beispiel ähnelt:
success
Überprüfen der Konfigurationen für Debian- und Ubuntu-Server
Führe die folgenden Schritte aus:
-
Führe den folgenden Befehl aus, um nach einer Uncomplicated Firewall (UFW) zu suchen:
sudo ufw status verbose
Beispielausgabe:
Status: active
-
Wenn du eine UFW ausführst, verwende den folgenden Befehl, um Verbindungsanforderungen für eingehenden Datenverkehr an den erforderlichen TCP-Ports zuzulassen:
TCP-Port 80:sudo ufw allow in 80/tcp
TCP-Port 443:
sudo ufw allow 443/tcp
-
Stelle für jeden Befehl sicher, dass die Ausgabe dem folgenden Beispiel ähnelt:
Rule added Rule added (v6)
Um weitere Probleme zu beheben, überprüfe die Zugriffsfehlerprotokolle des Webservers unter /var/log auf Probleme. Verwende die folgenden Standard-Webserver-Protokollspeicherorte:
- Verwende /var/log/httpd für Amazon Linux und RHEL.
- Verwende /var/log/apache2 für Debian und Ubuntu.
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?
- Themen
- Kalkulation
- Tags
- Amazon EC2Linux
- Sprache
- Deutsch
Ähnliche Videos

