Warum scheitert meine Lightsail-Lastenverteilung an der Integritätsprüfung, obwohl die Website ordnungsgemäß ausgeführt wird?

Letzte Aktualisierung: 18.10.2021

Ich verwende eine Amazon-Lightsail-Lastenverteilung für meine Amazon-Lightsail-Instance mit einem Bitnami-Stack. Warum schlägt die Zustandsprüfung der Lastenverteilung fehl, obwohl die Website ordnungsgemäß ausgeführt wird? Wie kann ich verhindern, dass die Integritätsüberprüfung der Lastenverteilung fehlschlägt?

Kurzbeschreibung

Die Lightsail-Lastenverteilung führt die Zustandsprüfung durch, indem sie die Antwort der URL http://ipaddress:80/healthcheckpath überprüft. Die Zustandsprüfung ist erfolgreich, wenn der Statuscode der Antwort 200 OK ist. Diese Antwortprüfung ist in der Lightsail-Lastenverteilung nicht anpassbar. Wenn Ihre Instance die HTTPS-Umleitung erzwingt, gibt http://ipaddress:80/healthcheckpath den Statuscode der Antwort 301 oder 302 anstelle von 200 OK zurück. Dies führt zum Scheitern des Gesundheitschecks.

Das gleiche Problem kann bei WordPress-Multisite-Instances auftreten, da diese Instances standardmäßig die URL http://ipaddress:80/healthcheckpath nach http://ipaddress.nip.io/healthcheckpath umleiten.

Auflösung

Hinweis: Die Dateipfade in den folgenden Auflösungsschritten können sich ändern, je nachdem, ob der Bitnami-Stack native Linux-Systempakete verwendet (Ansatz A) oder ob es sich um eine eigenständige Installation handelt (Ansatz B). Führen Sie den folgenden Befehl aus, um Ihren Bitnami-Installationstyp zu identifizieren:

test ! -f "/opt/bitnami/common/bin/openssl" && echo "Approach A: Using system packages." || echo "Approach B: Self-contained installation."

Die Schritte zur Behebung dieses Problems unterscheiden sich in Abhängigkeit von den folgenden:

  • Die Umleitung wird mithilfe von WordPress-Anwendungs-Plugins wie Really Simple SSL eingerichtet.
  • Die Umleitung wird mithilfe von Webserver-Umleitungsregeln eingerichtet.
  • Sie verwenden eine WordPress-Multisite-Stack-Instance.

Die Umleitung wird mithilfe von WordPress-Anwendungs-Plugins eingerichtet

Erstellen Sie eine HTML-Datei im Dokumentenstamm Ihrer Website. Ändern Sie dann die Konfiguration der Zustandsprüfung der Lastenverteilung, um diese Datei als Integritätsüberprüfungsdatei hinzuzufügen. Sie müssen diese Methode verwenden, da Umleitungen auf Anwendungsebene normalerweise keine Auswirkungen auf HTML-Dateien haben, die ursprünglich nicht Teil Ihrer Anwendung sind.

1.    Verbinden Sie sich mit Ihrer Lightsail-Instance.

2.    Navigieren Sie zum Dokumentenstamm-Speicherort Ihrer Website, in dem Sie Ihre Website-Dateien gespeichert haben.

Im Bitnami-Stapel unter Ansatz A ist der Stammspeicherort des Dokuments /opt/Bitnami/APPNAME/ (z. B. /opt/bitnami/wordpress).

Im Bitnami-Stapel unter Ansatz B ist der Stammspeicherort des Dokuments /opt/Bitnami/apps/APPNAME/htdocs (oder beispielsweise /opt/bitnami/apps/wordpress/htdocs).

Im LAMP Bitnami-Stapel ist der Stammspeicherort des Dokuments /opt/bitnami/apache2/htdocs.

3.    Erstellen Sie eine leere HTML-Datei entweder durch Hochladen oder durch Ausführen des folgenden Befehls:

touch health.html

4.    Gehen Sie zur Lightsail-Homepage und wählen Sie dann Netzwerk.

5.    Wählen Sie Ihre Lastenverteilung.

6.    Wählen Sie auf der Registerkarte Ziel-Instances die Option Zustandsprüfung anpassen.

7.    Geben Sie den Pfad health.html ein und wählen Sie dann Speichern.

8.    Stellen Sie sicher, dass http://ipaddress:80/health.html die 200OK-Antwort mithilfe eines HTTP-Header-Checkers zurückgibt.

9.    Warten Sie ein paar Minuten und überprüfen Sie dann, ob der Gesundheitscheck bestanden wurde.

Die Umleitung wird mithilfe von Webserver-Umleitungsregeln eingerichtet

Fügen Sie in den Umleitungsregeln des Webservers eine Ausnahmeregel für die Datei der Zustandsprüfung hinzu, sodass nur die ursprünglichen Website-Dateien umgeleitet werden, aber nicht die Datei für die Zustandsprüfung.

1.    Befolgen Sie die Schritte 1 bis 7 im Abschnitt Umleitung wird mithilfe von WordPress-Anwendungs-Plugins eingerichtet.

2.    Öffnen Sie die Webserver-Datei, in der Sie HTTPS-Umleitungsregeln hinzugefügt haben, und fügen Sie dann die folgende Zeile direkt vor der Zeile hinzu, die mit RewriteRule beginnt:

RewriteCond expr "! %{REQUEST_URI} -strmatch '*health.html’ "

Im Folgenden sind Beispiel-Umleitungsregeln aufgeführt:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond expr "! %{REQUEST_URI} -strmatch '*health.html’ "
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}

Nehmen Sie die vorhergehende Änderung der Regeln an den folgenden Stellen vor:

Bitnami-Stapel unter Ansatz A: /opt/bitnami/apache2/conf/bitnami/bitnami.conf und auch jede Datei, die mit dem Präfix -vhost.conf im Verzeichnis /opt/bitnami/apache2/conf/vhosts/ endet.

Bitnami-Stapel unter Ansatz B: /opt/bitnami/apache2/conf/bitnami/bitnami.conf.

3.    Starten Sie den Webservice neu.

sudo /opt/bitnami/ctlscript.sh restart

4.    Stellen Sie sicher, dass http://ipaddress:80/health.html die 200OK-Antwort mit diesem HTTP-Header-Checker zurückgibt.

5.    Warten Sie ein paar Minuten und überprüfen Sie dann, ob der Gesundheitscheck bestanden wurde.

Sie verwenden eine WordPress-Multisite-Stack-Instance

WordPress Multisite leitet die URL http://ipaddress:80/healthcheckpath standardmäßig nach http://ipaddress.nip.io/healthcheckpath um. Gehen Sie wie folgt vor, um dieses Problem zu beheben:

1.    Befolgen Sie die Schritte 1 bis 7 im Abschnitt Umleitung wird mithilfe von WordPress-Anwendungs-Plugins eingerichtet.

2.    Öffnen Sie die Datei /opt/bitnami/apache2/conf/vhosts/wordpress-vhost.conf und fügen Sie die folgende Zeile unter dem Abschnitt # BEGIN nip.io-Umleitung hinzu:

RewriteCond expr "! %{REQUEST_URI} -strmatch '*health.html' "

Das Folgende ist ein Beispiel für Regeln mit hinzugefügter Zeile:

# BEGIN nip.io redirection
RewriteEngine On
RewriteCond %{HTTP_HOST} ^([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})(:[0-9]{1,5})?$
RewriteCond expr "! %{REQUEST_URI} -strmatch '*health.html'"
RewriteRule ^/?(.*) %{REQUEST_SCHEME}://%1.nip.io%2/$1 [L,R=302,NE]
# END nip.io redirection

3.    Starten Sie den Webservice neu.

sudo /opt/bitnami/ctlscript.sh restart

4.    Stellen Sie sicher, dass http://ipaddress:80/health.html die 200OK-Antwort mit diesem HTTP-Header-Checker zurückgibt.

5.    Warten Sie ein paar Minuten und überprüfen Sie dann, ob der Gesundheitscheck bestanden wurde.


War dieser Artikel hilfreich?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?