Je souhaite mettre en place un reverse proxy à l'aide d'apache. J'ai en fait des serveurs web qui ne peuvent être vu de l'extérieur alors que le serveur apache lui est vu. Je veux donc passer par celui-ci qui se chargera d'effectuer les requêtes sur les serveurs "invisibles".
(extérieur)
|
apache
|
---------------
| |
serveur_1 serveur_2
Voici alors la configuration résultante.
NameVirtualHost *:80
[VirtualHost *:80]
ProxyRequests Off
[Proxy *]
Order deny,allow
Allow from all
[/Proxy]
[Location /site1/]
ProxyPass http://serveur_1/
ProxyPassReverse http://serveur_1/
[/Location]
[Location /site2/]
ProxyPass http://serveur_2/
ProxyPassReverse http://serveur_2/
[/Location]
[/VirtualHost]
Ainsi, si http://apache/ est l'URL de mon serveur apache, pour atteindre le serveur 1, je tape http://apache/site1/ et je me retrouve sur celui-ci.
Cependant s'il y à une URL absolue dans la page par exemple pour une image :
src="/img/mon_image.png"
L'URL résultante est http://apache/img/mon_image.png du coup elle n'est pas affiché car effectivement l'image n'est pas sur le serveur apache mais sur le serveur 1.
La bonne URL serait alors http://apache/site1/img/mon_image.png et c'est ce que je n'arrive pas à obtenir.
J'ai alors essayer de passer par le module "rewrite" afin de modifier les URL absolues "/" en "/site1/". Mais je dois m'y prendre mal car je n'arrive pas au résultat escompté.
Avez-vous une idée qui pourrait me faire avancer ?
# URL relatives
Posté par wismerhill . Évalué à 2.
Car tu peux éventuellement réécrire pour le premier serveur, mais alors le deuxième ne passera pas, à moins que dans ta réécriture d'URL tu ne tienne compte du referer, mais ce ne sera pas très robuste (le referer est un header optionnel).
[^] # Re: URL relatives
Posté par Spack . Évalué à 1.
[^] # Re: URL relatives
Posté par wismerhill . Évalué à 2.
Par exemple 1.apache qui renverrait vers serveur_1 et 2.apache qui renverrait vers serveur_2 (avec des VirtualHost différents)
Tu peux aussi faire des virtual host sur des ports différents, mais ça risque de ne pas être très partique d'être sur des ports non standards.
# mod_proxy_html + mod_substitute
Posté par Xavier MOGHRABI (site web personnel) . Évalué à 4.
J'ai eu un problème similaire.
En fait, lorsque l'on fait un ReverseProxy avec Apache, les URLs dans les headers sont bien transformées mais pas le code HTML, Javascript, CSS,...
J'ai eu un problème similaire avec le logiciel libre eXo Platform qui veut absolument répondre sur un context-root déterminé.
Pour cela, j'ai utilisé mod_proxy_html pour réécrire le lien HTML à la volé et mod_substitute pour certians cas particuliers.
Voici un lien sur mod_proxy_html (http://apache.webthing.com/mod_proxy_html ) sur lequel tu trouveras un tutoriel expliquant la problématique : http://www.apachetutor.org/admin/reverseproxies.
Cordialement
Xavier
[^] # Re: mod_proxy_html + mod_substitute
Posté par Spack . Évalué à 1.
# Squid
Posté par yellowiscool . Évalué à 2.
C'est beaucoup plus performant dans la gestion des caches (quand le serveur est en adsl, ça compte beaucoup), et plus simple aussi.
Des petits problèmes comme ça, tu en as pas. Bon, t'en a d'autres, mais c'est quand même mieux.
Envoyé depuis mon lapin.
[^] # Re: Squid
Posté par Xavier MOGHRABI (site web personnel) . Évalué à 1.
Je trouve que Squid est moins bien documenté qu'Apache HTTPD et les exemples sur Internet sont moins nombreux.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.