Meine ELB nimmt meine Instanzen weiterhin außer Betrieb, da die HTTP-Integritätsprüfung fehlschlägt.
Wir haben einen DNS-Platzhalter und leiten alles an www weiter:
vhost.conf:
ServerName www.example.com
ServerAlias *.example.com
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^ http://www.example.com/$1 [R=301,L]
Dies funktioniert gut für tatsächliche Browser, aber die HTTP-Integritätsprüfung schlägt fehl, vermutlich weil sie eine 302 erhält.
Ist die beste Option, um eine TCP-Integritätsprüfung zu verwenden, oder gibt es eine Möglichkeit, HTTP zum Laufen zu bringen?
Antworten:
Diese Frage wurde in den AWS-Foren gestellt. Die Antwort bestand darin, einen Standard-vhost einzurichten, der den Datenverkehr auf der bloßen IP-Adresse verarbeitet und keine Weiterleitungen durchführt. Dies bedeutet, dass normale Benutzer, die Ihre IP-Adresse erreicht haben, ebenfalls nicht umgeleitet werden.
Sie können alternativ den Pfadteil der URL angeben, den die ELB anfordern soll, und diesen Pfad ignorieren, indem Sie eine weitere RewriteCond hinzufügen:
Normale Benutzer, die diese URL erreichen, werden nicht umgeleitet.
Sie können dieselbe Technik auch verwenden, um den User-Agent der ELB zu erkennen.
Normale Benutzer, die ihren User-Agent fälschen, werden nicht umgeleitet.
Oder die interne IP-Adresse der ELB.
Damit diese Option funktioniert, müssen Sie entweder
mod_rpaf
(für Apache 2.2) odermod_remoteip
(für Apache 2.4) dieREMOTE_ADDR
Variable so ändern , dass sie den richtigen Teil des Inhalts desX-Forwarded-For
Headers enthält. Solange Sie dies richtig eingerichtet haben, sollte es einem normalen Benutzer nicht möglich sein, die Umleitungsantwort zu vermeiden.quelle
10.
. Der Rest der Teile der IP-Adresse kann sich beliebig ändern und wird trotzdem abgeglichen. Der10.*.*.*
IP-Adressbereich (oder 10.0.0.0/8) kann nicht über das Internet weitergeleitet werden.Das Hinzufügen von virtuellen Hosts ist keine gute Idee, da der httpd-Dienst neu gestartet werden muss, damit virtuelle Hosts wiedergegeben werden. Es gibt eine alternative Möglichkeit, dies zu tun
Trennen Sie alle vier Teile des
DNS- Namens wie folgt : elb_dns_name: elb-name.subnet_zone.elb.amazonaws.com
Für alle verbleibenden URLs gelten interne Umschreiberegeln.
Verzeichnisstruktur: Codeordner / Website
RewriteEngine On
RewriteCond% {HTTP_HOST}! $ [NC]
RewriteCond% {REQUEST_URI}! ^ / Index.php $
RewriteRule ^ (. *) $ / $ 1 [L, QSA]
Das hat bei mir sehr gut funktioniert. Bitte schlagen Sie vor, wenn es bessere Methoden gibt Prost!
quelle