2017-09-11 4 views
0

Le trafic vers le deuxième nom de domaine sur notre serveur, ws.example.org, n'est pas géré correctement. Au lieu de fournir du contenu à partir du répertoire du deuxième nom de domaine, il est fourni, de manière incorrecte, à partir de l'entrée du premier nom de domaine www.example.org.Le trafic de sous-domaines via le proxy F5 n'est pas géré correctement

Les détails:

Le serveur exécute Apache 2.2.31 et se trouve derrière un équilibreur de charge F5/proxy qui contient le certificat SSL pour les noms de domaine en question. Le trafic de notre serveur reçoit de la F5 est pas crypté mais est toujours livré sur le port 443.

L'entrée de configuration Apache pour la valeur par défaut : 443 hôte virtuel a été commenté. Le serveur n'a aucun certificat installé ou disponible et ne crypte aucun trafic.

Le contenu pertinent de httpd.conf est:

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> 

Puisque nous voulons forcer l'utilisation de www pour example.org et nous voulons forcer le trafic à chiffrer les règles de suivi dans .htaccess, qui réside dans/Apache/htdocs, sont utilisés:

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] 

Je n'ai pas de visibilité au F5, mais ont été assurés qu'il n'y a pas iRules en place liées à notre domaine sur la touche F5. Nous avons essayé d'avoir le trafic de la F5 livré à notre serveur sur le port 80 et bien que cela fonctionne partiellement pour le deuxième nom de domaine, ws.example.org, il casse le domaine principal www.example.org (l'erreur dans ce cas était une boucle de redirection infinie).

Répondre

0

La solution s'est avérée être une combinaison de modifications qui devaient être apportées à la fois sur le F5 et sur le serveur Apache. Sur Apache, nous avons tous désactivé le port 443 après nous être assurés que ce F5 ne faisait que l'envoi de trafic sur le port 80.

Sur le F5, une iRule devait être ajoutée pour inclure l'en-tête qui indiquait à Apache le protocole utilisé. que la règle de réécriture pour déterminer si nous avions besoin de réécrire à httpS fonctionnerait. Le iRule ajouté à la F5 était:

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] 
} 

La seule règle que nous avions besoin du groupe de 3 était au-dessus d'une X-Forwarded-Proto

Dès que la règle de la F5 a été tout ajouté commencé à travailler correctement et est toujours aujourd'hui.