2017-09-11 7 views
0

Datenverkehr zum 2. Domänennamen auf unserem Server, ws.example.org, wird nicht korrekt verarbeitet. Anstatt Inhalte aus dem 2. Domain-Name-Verzeichnis zu liefern, wird sie fälschlicherweise vom 1. Domain-Namen-Eintrag www.example.org geliefert.Subdomain-Datenverkehr über F5-Proxy wird nicht korrekt verarbeitet

Die Details:

Der Server Apache 2.2.31 und sitzt hinter einem F5 Load Balancer/Proxy ausgeführt wird, der das SSL-Zertifikat für den Domain-Namen in Frage enthält. Der Verkehr unseres Server aus dem F5 erhält, ist NICHT verschlüsselt ist aber immer noch 443.

Der Apache-Konfigurationseintrag für den Standard auf Port geliefert: 443 virtuelle Host kommentiert worden sind. Auf dem Server sind keine Zertifikate installiert oder verfügbar und es wird kein Verkehr verschlüsselt.

Der relevante Inhalt der httpd.conf ist:

Listen 80 
Listen 443 

NameVirtualHost *:80 

<VirtualHost *:80> 
    ServerName www.example.org 
    ServerAlias example.org 
    DocumentRoot /Apache/htdocs 
    <Directory "/Apache/htdocs"> 
    Options FollowSymLinks MultiViews 
    AllowOverride All 
    Order allow,deny 
    Allow from all 
    </Directory> 
</VirtualHost> 

<VirtualHost *:80> 
    ServerName ws.example.org 
    DocumentRoot "/Apache/htdocs/WebServices" 
    <Directory "/Apache/htdocs/WebServices"> 
    AllowOverride All 
    </Directory> 
</VirtualHost> 

Da wir die Verwendung von www für example.org erzwingen wollen und wollen wir Verkehr zwingen, die Regeln folgen in .htaccess verschlüsselt werden, die in/Apache/htdocs befindet, verwendet werden:

RewriteEngine On 

# force www 
RewriteCond %{HTTP_HOST} ^example.org [NC] 
RewriteRule ^(.*)$ https://www.example.org/$1 [L,R=301] 

# force HTTPS for everything 
RewriteCond %{HTTP:X-Forwarded-Proto} !https 
RewriteCond %{HTTPS} off 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

ich habe keine Sicht auf die F5 aber wurde versichert, dass es keine iRules vorhanden sind, um unsere Domäne auf dem F5 zusammen. Wir haben versucht, den Datenverkehr von der F5 an unseren Server an Port 80 zu liefern, und obwohl das teilweise für den zweiten Domain-Namen ws.example.org funktioniert, bricht es die Hauptdomain www.example.org (der Fehler war in diesem Fall) eine unendliche Umleitungsschleife).

Antwort

0

Die Lösung erwies sich als eine Kombination von Änderungen, die sowohl auf dem F5 als auch auf dem Apache-Server vorgenommen werden mussten. Bei Apache haben wir alle abgehört, die auf Port 443 hörten, nachdem wir sichergestellt hatten, dass F5 nur Verkehr an Port 80 sendete.

Auf der F5 musste eine iRule hinzugefügt werden, um den Header zu enthalten, der Apache mitteilte, wie das Protokoll war dass die Rewrite-Regel, um zu bestimmen, ob wir in httpS umschreiben mussten oder nicht, funktionieren würde. Die iRule hinzugefügt, um die F5 war:

when CLIENT_ACCEPTED { 
    if { [PROFILE::exists clientssl] } then { 
     set client_protocol "https" 
    } else { 
     set client_protocol "http" 
    } 
} 
when HTTP_REQUEST { 
    HTTP::header insert "X-Forwarded-For" [IP::client_addr] 
    HTTP::header insert "X-Forwarded-Proto" $client_protocol 
    HTTP::header insert "X-Forwarded-Port" [TCP::client_port] 
} 

Die einzige Regel, die wir aus der Gruppe der 3 oben brauchte, war das für X-Forwarded-Proto

Sobald die Regel für die F5 alles wurde hinzugefügt fing an, richtig zu arbeiten und ist noch heute.

Verwandte Themen