2010-01-20 6 views
1

J'ai configuré un hôte avec apache pour servir des pages statiques et utiliser Tomcat pour servir mon application web (Voir this question). Les pages statiques sont serveur deTomcat desservant les URL incorrectes avec mod_proxy et apache

"http://myhost.com"

et la dynamique (tomcat) pages sont serveur de

"http://myhost.com/myapp"

Le mod_proxy fait que le "http://myhost.com/myapp" sont transmis à tomcat serveur s'exécutant sur "http://myhost.com:8080".

Le problème est que maintenant, vous obtenez la page d'introduction standards Tomcat sur « http://myhost.com/myapp » mais si vous cliquez sur un lien local (par exemple « Status ») à gauche, il génère une URL « http://myhost.com/manager/status » alors qu'il devrait generate: "http://myhost.com/monapp/manager/état"

(La même chose est vraie pour les webapps installés sous tomcat)

Que faut-il changé dans ma configuration (apache, tomcat?) pour rediriger mes liens tomcat au bon endroit?

Répondre

0

Avez-vous défini le paramètre ProxyPassReverse dans votre fichier httpd.conf. Cela remplacera l'en-tête HTTP et vous obtiendrez la bonne requête du côté de tomcat.

+0

j'ai fait ce qui suit: ProxyPass/myapp http: // localhost: 8080/ ProxyPassReverse/myapp http: // localhost: 8080/ Mais il ne fonctionne pas avec le dossier racine de TOMCAT. Ce que je réussi à faire (comme je l'ai seulement besoin de se référer à mon application Web de myhost.com/mywebapp) est d'utiliser les commandes ProxyPass suivantes: ProxyPass/mywebapp http: // localhost: 8080/mywebapp ProxyPassReverse/mywebapp http: // localhost: 8080/mywebapp Cela m'aide finalement avec mon problème actuel. Cependant, pourquoi le tomcat se réfère encore mal pour le contenu que le serveur est toujours un mystère pour moi. – Roalt

+0

IMHO vous devez éditer à mywebapp. Les liens sont générés par votre chat et s'ils ne sont pas comme http://myhost.com/myapp/manager/status ils échouent. – DrDol

+0

Savez-vous où vous mettez l'URI par défaut? – Roalt

0

Vos URL sont mises en correspondance à partir de:

http://myhost.com/myapp ->http://myhost.com:8080

Cela signifie que l'accès à l'URL ci-dessus sera mis en correspondance avec l'application ROOT dans Tomcat. L'application ROOT générera des pages contenant des liens issus du contexte racine de Tomcat.

En d'autres termes, si vous allez à:

http://myhost.com:8080

vous obtiendrez une page qui contient des liens vers

http://myhost.com:8080/manager/status

Ce lien fonctionne. Toutefois, lorsque cette page est rendu à un navigateur qui l'a demandé via Apache, l'URL complète ressemble alors: http://myhost.com/manager/status

Je suppose que vous avez l'intention de déployer une application appelée « monapp » à Tomcat? Si tel est le cas, l'URL Tomcat pour cette application sera

http://myhost.com:8080/myapp

qui travaillera également être mis en correspondance correctement quand on y accède via Apache.

Si vous devez absolument accéder à l'application racine Tomcats de cette manière, vous devrez réécrire les URL qu'il affiche dans les pages qu'il retourne.

+0

En fait, dans cette configuration myapp fait maintenant référence à la ROOT de tomcat, ce qui est correct. Donc, une webapp devrait être sous http://myhost.com/myapp/webapp. – Roalt

0

J'ai eu le plus de succès avec mod_proxy_ajp. Il nécessite mod_proxy, mais fonctionne sur ajp.L'utiliser à la place, votre fichier de configuration ressemble

ProxyPass/ajp://localhost:8009/ 

Voir ma similar question et aussi la réponse à this question. Le seul défaut dans mod_proxy_ajp que j'ai trouvé est que si j'ai besoin de redémarrer tomcat, je dois forcer un redémarrage apache aussi.

Questions connexes