Wie behebe ich 504-Fehler in CloudFront?

Lesedauer: 3 Minute
0

Ich verwende eine Amazon-CloudFront-Verteilung, um Inhalte bereitzustellen. Zuschauer erhalten jedoch einen 504-Fehler, wenn sie versuchen, über einen Webbrowser auf den Inhalt zuzugreifen. Wie kann ich diese Fehler beheben?

Kurzbeschreibung

CloudFront gibt zwei Arten von 504-Fehlern zurück:

  • 504: „Gateway Timeout“-Fehler treten auf, wenn der Fehler vom Ursprung zurückgegeben und dann über CloudFront an den Viewer weitergegeben wird.
  • 504: „Die Anfrage konnte nicht erfüllt werden“-Fehler treten auf, wenn der Ursprung im zugewiesenen Zeitraum nicht auf CloudFront geantwortet hat und die Anfrage daher abgelaufen ist.

Basierend auf dem Fehler, den Sie erhalten, finden Sie weitere Informationen im entsprechenden Lösungsabschnitt.

Auflösung

504: „Gateway-Timeout“-Fehler

Stellen Sie sicher, dass die richtigen Ports in Ihrer Sicherheitsgruppe geöffnet sind.

Stellen Sie sicher, dass der Ursprungsserver eingehenden Datenverkehr von CloudFront zulässt, in der Regel auf Port 443 oder 80.

Wenn Ihr Ursprung Elastic Load Balancing verwendet, überprüfen Sie die ELB-Sicherheitsgruppen. Stellen Sie sicher, dass die Sicherheitsgruppen eingehenden Datenverkehr von CloudFront zulassen.

Stellen Sie sicher, dass die Firewall des Ursprungsservers Verbindungen von CloudFront zulässt

Vergewissern Sie sich je nach Betriebssystem, dass die Firewall Datenverkehr für Port 443 und 80 zulässt.

Wenn Sie Redhat Linux View verwenden, stellen Sie sicher, dass Ihre Firewall-Regeln mit den folgenden Einstellungen übereinstimmen.

Firewall-Regeln:

$ sudo firewall-cmd --permanent --zone=public --list-ports

Regeln dauerhaft hinzufügen:

$ sudo firewall-cmd --permanent --zone=public --add-port=80/tcp       
$ sudo firewall-cmd --permanent --zone=public --add-port=443/tcp

Wenn Sie Ubuntu Linux verwenden, stellen Sie sicher, dass Ihre Firewall-Regeln mit den folgenden Einstellungen übereinstimmen.

Firewall-Regeln zu Ubuntu Linux anzeigen:

$ sudo ufw status verbose

Regeln dauerhaft hinzufügen:

$ sudo ufw allow 80
$ sudo ufw allow 443

Wenn Sie die Windows-Firewall auf einem Windows-Server verwenden, finden Sie in der Microsoft-Dokumentation weitere Informationen unter Hinzufügen oder Bearbeiten der Firewall-Regel.

Stellen Sie sicher, dass Ihr benutzerdefinierter Server über das Internet zugänglich ist

Wenn CloudFront nicht über das Internet auf Ihren Ursprung zugreifen kann, gibt CloudFront einen 504-Fehler zurück. Stellen Sie sicher, dass Ihre HTTP- und HTTPS-Regeln den folgenden Einstellungen entsprechen, um zu überprüfen, ob der Internetverkehr eine Verbindung zu Ihrem Ursprung herstellen kann.

Für HTTPS-Verkehr:

nc -zv OriginDomainName/IP_Address 443
telnet OriginDomainName/IP_Address 443

Für HTTP-Verkehr:

nc -zv OriginDomainName 80
telnet OriginDomainName 80

504: „Die Anfrage konnte nicht erfüllt werden“-Fehler

Messen Sie die typische Latenz und Hochlast-Latenz Ihrer Webanwendung

Verwenden Sie den folgenden Befehl, um die Reaktionsfähigkeit Ihrer Webanwendung zu messen:

curl -w "DNS Lookup Time: %{time_namelookup} \nConnect time: %{time_connect} \nTLS Setup: %{time_appconnect} \nRedirect Time: %{time_redirect} \nTime to first byte: %{time_starttransfer} \nTotal time: %{time_total} \n" -o /dev/null https://www.example.com/yourobject

Hinweis: Geben Sie für https://www.example.com/yourobject die URL der Webanwendung ein, die Sie testen.

Die Ausgabe sieht ähnlich aus wie die folgende:

DNS Lookup Time: 0.212319   
Connect time: 0.371254   
TLS Setup: 0.544175  
Redirect Time: 0.000000   
Time to first byte: 0.703863   
Total time: 0.703994

Beheben Sie je nach Speicherort der Anforderung eine Problembehandlung bei dem Schritt, der eine hohe Latenz aufweist.

Ressourcen hinzufügen oder Server und Datenbanken optimieren

Stellen Sie sicher, dass Ihr Server über genügend CPU, Arbeitsspeicher und Festplattenspeicher verfügt, um Viewer-Anfragen zu bearbeiten.

Richten Sie persistente Verbindungen auf Ihrem Backend-Server ein. Diese Verbindungen tragen zur Latenz bei, wenn Verbindungen für nachfolgende Anforderungen wiederhergestellt werden müssen.

Passen Sie den CloudFront-Timeout-Wert an

Wenn die vorherigen Schritte zur Fehlerbehebung die HTTP 504-Fehler nicht behoben haben, aktualisieren Sie die Zeit, die in Ihrer Verteilung für den Timeout der Ursprungsantwort angegeben ist.


Relevante Informationen

HTTP 504-Statuscode (Gateway-Timeout)

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren