Kategorien

Zuletzt aktualisiert am 09. März 2020

Der HTTP-Router von Heroku stellt nicht gestaltetes HTML mit dem HTTP-Statuscode 503 (Dienst nicht verfügbar) bereit, wenn in Ihrer App ein Fehler auf Systemebene auftritt oder der Wartungsmodus aktiviert ist.

Andere Fehler, z. B. Anwendungsfehler (a 404 oder 500), zeigen die Fehlerseite Ihrer Anwendung und nicht die Heroku-Fehlerseite an. Nur Fehler auf Systemebene, die zu keiner oder einer fehlerhaften Antwort führen, zeigen die hier beschriebene Heroku-Fehlerseite an.

Debugging

Protokolle sind der erste Ort, an dem Sie nachsehen müssen, wenn Ihre Benutzer die Heroku-Fehlerseiten melden. Verwenden Sie den Befehl heroku logs, um den einheitlichen Ereignisstrom für Ihre Anwendung und den Status der Heroku-Plattformkomponenten anzuzeigen, die Ihre Anwendung unterstützen.

$ heroku logs2011-03-01T16:16:29-08:00 heroku: State changed from starting to crashed2011-03-01T16:16:59-08:00 heroku: at=error code=H10 desc="App crashed" method=GET path=/ host=myapp.herokuapp.com fwd=17.17.17.17 dyno= connect= service= status=503 bytes=

In diesem Beispiel hat der Router versucht, eine Seite für die App bereitzustellen, aber der Webprozess ist abgestürzt. Der Error H10 -Protokolleintrag enthält den Fehlercode H10, der die Ursache dieses bestimmten Problems angibt. In der vollständigen Liste der Fehlercodes finden Sie die Ursache des angezeigten Fehlers.

Weitere Informationen zum Aufspüren von Fehlern, die dazu führen können, dass die Fehlerseiten generiert werden, finden Sie im Artikel Protokollierung. Wenn Sie weiter debuggen müssen, erfahren Sie, wie Sie SSH in einen Prüfstand einbinden.

Seiten anpassen

Die Seiten, die Ihren Benutzern angezeigt werden, wenn die Anwendung auf einen Systemfehler stößt oder sich im Wartungszustand befindet, können angepasst werden. Durch Anpassen dieser Seiten können Sie Ihren Benutzern eine konsistentere Benutzeroberfläche präsentieren.

Erstellen und speichern Sie die benutzerdefinierten Seiten

Erstellen Sie Ihre benutzerdefinierten Seiten als statisches HTML. Möglicherweise möchten Sie das von Heroku bereitgestellte Standard-HTML als Vorlage verwenden:

  • https://www.herokucdn.com/error-pages/application-error.html
  • https://www.herokucdn.com/error-pages/no-such-app.html
  • https://www.herokucdn.com/error-pages/maintenance-mode.html
  • https://www.herokucdn.com/error-pages/ssl-cert-error.html

Sie können Bilder oder CSS aus dem HTML-Code referenzieren, solange Sie relative Pfade verwenden (z. B. <img src="error.png">) und die anderen Assets an derselben Stelle wie der HTML-Code hochladen.

Sie können die Seiten überall hosten, wo Webseiten bereitgestellt werden können. Wir empfehlen den Upload auf Amazon S3. Wenn Sie S3 verwenden, vergessen Sie nicht, den HTML-Code und alle Assets so einzustellen, dass sie öffentlich lesbar sind.

Aufgrund der Sicherheitseinstellungen im IFrame funktionieren Links auf Ihrer benutzerdefinierten Fehlerseite möglicherweise nicht, es sei denn, Sie geben „target = _blank“ im HTML-Code an.

Konfigurieren Sie Ihre Anwendung

Legen Sie die Konfigurationsvariablen ERROR_PAGE_URL und MAINTENANCE_PAGE_URL auf die öffentlich zugänglichen URLs Ihrer benutzerdefinierten Seiten fest:

$ heroku config:set \ ERROR_PAGE_URL=//s3.amazonaws.com/<your_bucket>/your_error_page.html \ MAINTENANCE_PAGE_URL=//s3.amazonaws.com/<your_bucket>/your_maintenance_page.html

Testing

Um Ihre Wartungsseite zu testen, geben Sie:

$ heroku maintenance:on$ heroku open

Die benutzerdefinierte Seite wird bereitgestellt, und in Ihren Anwendungsprotokollen wird ein H80-Code für diesen Webtreffer angezeigt, der angibt, dass dem Benutzer eine Wartungsseite bereitgestellt wurde.

$ heroku logs -p router -n 12010-10-08T17:44:18-07:00 heroku: at=info code=H80 desc="Maintenance mode" method=GET path=/ host=myapp.herokuapp.com fwd=17.17.17.17 dyno= connect= service= status=503 bytes=

Um Ihre Fehlerseite zu testen, können Sie eine fehlerhafte Bereitstellung durchführen, z. B. einen Syntaxfehler in eine Schlüsselkonfigurationsdatei einfügen oder einen Pfad in Ihrer App erstellen, der 35 Sekunden lang inaktiv ist (wodurch der Fehler ausgelöst wird) H12 Anforderungszeitlimit. Besuchen Sie eine App oder einen Pfad mit einem solchen Fehler, während Sie die Protokolle ansehen:

$ heroku logs --tail2010-10-08T18:04:40-07:00 app: Sleeping 35 seconds before I serve this page2010-10-08T18:05:10-07:00 heroku: at=error code=H12 desc="Request timeout" method=GET path=/ host=myapp.herokuapp.com fwd=17.17.17.17 dyno=web.1 connect=6ms service=30001ms status=503 bytes=02010-10-08T18:05:15-07:00 app: Done sleeping

Die benutzerdefinierte Fehlerseite wird in Ihrem Browser angezeigt.

SSL

Wenn auf Ihre Website über SSL zugegriffen wird, zeigen einige Browser eine Warnung oder einen Fehler an, wenn die Wartungs- und Fehlerseiten nicht auch eine HTTPS-URL verwenden. Stellen Sie sicher, dass Sie passende Anwendungs- und Fehlerseitenprotokolle verwenden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.