2 votes

Les urls absolues ne fonctionnent pas avec Apache2 AJP proxy Tomcat

Je n'arrive pas à comprendre comment configurer correctement ReverseProxy. Les URLs renvoyées sont toutes pour le répertoire racine "/", pas pour "/tomcat" et seule la page principale "par défaut" de tomcat est affichée. J'utilise Apache2 comme frontal pour Tomcat avec les règles Proxy suivantes :

ProxyPass /tomcat ajp://127.0.0.1:8009/
ProxyPassReverse /tomcat ajp://127.0.0.1:8009/

J'ai également essayé d'utiliser le ProxyName dans le paramètre du connecteur AJP de Tomcat. L'utilisation de mod_rewrite pour proxyer la requête AJP a également donné le même résultat.

Apache error.log donne la ligne suivante (en essayant de charger les images depuis sa propre racine) :

File does not exist: /var/www/asf-logo-wide.gif, referer:

EDIT : AJP fonctionne à travers mod_jk, mais j'ai toujours le même problème avec HTTP lorsque j'utilise des sous-dossiers.

0 votes

Je n'arrive toujours pas à faire fonctionner ce système sur un sous-dossier, alors qu'en utilisant un proxy sur le dossier racine, tout fonctionne.

0 votes

J'ai abandonné, c'était beaucoup moins cher d'acheter un domaine pour ce serveur de test :)

0 votes

Pourquoi acheter un deuxième domaine plutôt que d'utiliser un sous-domaine ?

3voto

Courage Mind Points 498

Le problème est que votre serveur Tomcat intègre des liens dans le HTML avec le chemin qu'il connaît. Pas le chemin vers votre serveur proxy. (Ceci est tiré de votre entrée de journal *.gif)

ProxyPassReverse ne modifie pas les liens en HTML. Il ne modifie que les en-têtes HTTP.

Pour que cela fonctionne, vous devez configurer tomcat avec l'emplacement et le chemin appropriés dans le contexte de l'application. Vous devrez probablement renommer le fichier webapp.war en ROOT.war et changer toute configuration de contexte en "/".

0 votes

Cette réponse semble être la plus instructive, car aucune des autres suggestions ne semble résoudre mon problème (ou alors je m'y prends mal).

2voto

Vous pouvez essayer cet article, qui explique la manière appropriée d'utiliser ProxyPassReverse :

http://www.humboldt.co.uk/2009/02/the-mystery-of-proxypassreverse.html

1voto

pacey Points 3783

Puisque vous produisez des URL absolus, il existe plusieurs scénarios courants :

Utilice mod_proxy_html .

Ou vous pouvez utiliser RewriteEngine pour réécrire les URL en / まで /myapp/ .

RewriteEngine On
RewriteCond %{REQUEST_URI} ! ^/myapp/
RewriteRule ^/(.*)$ /myapp/$1

Il s'agit d'une mémoire. Vous pouvez donc vérifier par vous-même en utilisant la fonction de vérification de l'état des lieux. Documentation sur le mod_rewrite . Mais je recommande de s'en tenir à mod_proxy_html puisque la réécriture des liens envoyés aux clients serait moins complexe que la réécriture de chaque requête en interne.

0 votes

Pourriez-vous nous en dire un peu plus sur les règles de réécriture ? J'aimerais écrire mon.domaine.com/sous-dossier à localhost:8080/un autre dossier

0 votes

Qui ne semble pas du tout lié au problème de base ? Je pensais que vous obteniez des hits sur la racine du répertoire Reverseproxys qui provoque l'erreur ?

0 votes

Désolé, je n'ai peut-être pas très bien décrit dans mon dernier commentaire. Oui, c'est le proxy inverse qui a des problèmes je suppose, les URLs sont affichés à mon.domaine.com/PATH pas à mon.domaine.com/tomcat/PATH . Comment puis-je utiliser Apache URL rewriting pour réécrire les URLs générées par Tomcat ?

0voto

Andrew M. Points 10852

Au cas où vous auriez besoin de revenir à mod_proxy :

<Location /tomcat>
    ProxyPass ajp://127.0.0.1:8009/tomcat
    ProxyPassReverse ajp://127.0.0.1:8009/tomcat
</Location>

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