3 votes

Tomcat Redirect Issue - Extra "/" after hostname - Help Please

Tous,

Nous rencontrons un problème particulier.

Nous avons Tomcat 6.0.24 avec Apache2.2.3. Nous avons un VirtualHost desservant le port 80 et un ServerAlias. Apache transmet simplement "/" à l'équilibreur de charge de Tomcat.

---------httpd.conf snippet:--------

<VirtualHost *:80>
    ServerName wwwprod.lsa.umich.edu
    ServerAlias wwwprod www www.lsa.umich.edu
    Redirect         / balancer://dsmdelivery/
    ProxyPass        / balancer://dsmdelivery/
    ProxyPassReverse / balancer://dsmdelivery/
    TraceEnable Off
</VirtualHost>

------------Fin de l'extrait de httpd.conf----

Tomcat ajoute un "/" supplémentaire en créant une réponse 302 pour l'un des alias de serveur, et non pour l'autre comme dans la sortie curl ci-dessous, lorsque l'URI n'a pas de "/" à la fin.

Vous le remarquerez donc :

http://www.lsa.umich.edu/polisci <== revient avec un "//" dans l'en-tête de l'emplacement du message de réponse de la redirection 302

http://wwwprod.lsa.umich.edu/polisci <== n'a pas de "//" dans l'en-tête Location du 302

-------------- Résultats de Curl pour les deux hôtes virtuels : -------------

$ curl -v  http://wwwprod.lsa.umich.edu/polisci
* About to connect() to wwwprod.lsa.umich.edu port 80 (#0)
*   Trying 141.211.177.191... connected
* Connected to wwwprod.lsa.umich.edu (141.211.177.191) port 80 (#0)
GET /polisci HTTP/1.1
User-Agent: curl/7.19.7 (universal-apple-darwin10.0) libcurl/7.19.7 OpenSSL/0.9.8r zlib/1.2.3
Host: wwwprod.lsa.umich.edu
Accept: */*
< HTTP/1.1 302 Moved Temporarily < Server: Apache-Coyote/1.1
< Location: http://wwwprod.lsa.umich.edu/polisci/
< Transfer-Encoding: chunked
< Date: Tue, 13 Sep 2011 20:28:29 GMT
<
* Connection #0 to host wwwprod.lsa.umich.edu left intact
* Closing connection #0
$
$
$ curl -v  http://www.lsa.umich.edu/polisci
* About to connect() to www.lsa.umich.edu port 80 (#0)
*   Trying 141.211.177.203... connected
* Connected to www.lsa.umich.edu (141.211.177.203) port 80 (#0)
GET /polisci HTTP/1.1
User-Agent: curl/7.19.7 (universal-apple-darwin10.0) libcurl/7.19.7 OpenSSL/0.9.8r zlib/1.2.3
Host: www.lsa.umich.edu
Accept: */*
< HTTP/1.1 302 Moved Temporarily < Date: Tue, 13 Sep 2011 20:28:47 GMT
< Server: Apache-Coyote/1.1
< Location: http://www.lsa.umich.edu//polisci/
< Content-Length: 0
< X-Cnection: close
< Content-Type: text/plain; charset=UTF-8
< Set-Cookie: BIGipServerlsa-cmsproddlv_pool=3232879501.20480.0000; path=/
<
* Connection #0 to host www.lsa.umich.edu left intact
* Closing connection #0

Remarquez le "//" dans la deuxième sortie ci-dessus. C'est ce qui provoque la rupture des liens.

(Les deux hôtes virtuels ont un serveur virtuel défini sur le F5. Le serveur virtuel "www.lsa.umich.edu" est associé à des iRules. Celles-ci n'ont pas été modifiées récemment).

Je vous remercie de vos commentaires.

Danke!

1voto

bentolor Points 561

J'ai remonté le problème jusqu'à une directive "ProxyPreserveHost On" manquante dans le LSA et les VirtualHosts II. J'ai ajouté la directive manquante et tout fonctionne bien.

La documentation d'Apache indique :

Lorsqu'elle est activée, cette option transmet la ligne Host : de la requête entrante à l'hôte mandaté, au lieu du nom d'hôte spécifié dans le formulaire de demande. à l'hôte mandaté, au lieu du nom d'hôte spécifié dans la ligne proxypass.

Cette option devrait normalement être désactivée. Elle est surtout utile dans les configurations spéciales comme l'hébergement virtuel par nom de masse proxié, où l'en-tête Host original doit être évalué par le serveur d'arrière-plan. serveur.

Dans notre cas, nous faisons de l'hébergement virtuel basé sur des noms de masse et cette directive nous manquait.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X