2010-04-09 6 views
4

Je rencontre un problème lors de la configuration de la directive ProxyPass apache tomcat pour deux applications ayant deux chemins de contexte différents dans tomcat. Le tomcat court derrière un apache et j'utilise l'apache pour acheminer les requêtes vers tomcat. En apache je veux accéder aux deux applications via un nom d'hôte au lieu d'un chemin de contexte.Apache - Tomcat ProxyPass VirtualHost - Chemin de contexte

Scénario:

tomcat

https://domain:8443/app1 
https://domain:8443/app2 

dans tomcat les applications ont le chemin de contexte app1 et App2

dans apache Je veux permettre à la fois l'application comme suit:

https://app1.host/ 
https://app2.host/ 

En apache j'ai créé une configuration pour chaque domaine:

ProxyPass/https://localhost:8443/app1 
ProxyPassReverse/https://localhost:/8443/app1 

La chose étrange est app1 est uniquement disponible via apache en utilisant le chemin de contexte:

https://app1.host/app1 

Est-il possible de réaliser une telle configuration avec le module apache ProxyPass?

Merci pour votre aide.

Répondre

10

Vous devriez être en mesure d'atteindre le résultat que vous souhaitez en utilisant l'hébergement virtuel. Aussi, c'est une bonne idée de passer les requêtes à Tomcat via le protocole AJP au lieu de HTTPS. Essayez d'ajouter ceci à la configuration Apache

NameVirtualHost *:443 

<VirtualHost *:443> 
    ServerName app1.host 
    ProxyPass/ajp://localhost:8009/app1/ 
</VirtualHost> 

<VirtualHost *:443> 
    ServerName app2.host 
    ProxyPass/ajp://localhost:8009/app2/ 
</VirtualHost> 

Si vous n'avez pas modifié les paramètres du serveur par défaut pour Tomcat cela devrait fonctionner comme il est. Sinon, assurez-vous de spécifier le port AJP configuré dans le fichier conf/server.xml de Tomcat. Il devrait y avoir une ligne semblable à celle-ci:

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> 

Assurez-vous que vous avez les modules mod_proxy et mod_proxy_ajp chargés dans la configuration Apache, cela peut varier en fonction de votre installation d'Apache. Supprimez également toutes les lignes 'ProxyPass/...' précédemment configurées car elles interfèrent avec la nouvelle configuration. J'espère que cela fonctionne pour toi.

+1

Si vous utilisez des sessions Tomcat, Tomcat établira un cookie JSESSIONID avec un chemin de/app1 (ou/App2). Cependant, le navigateur voit les URL basées sur '/', donc il ne transmettra pas le cookie d'identifiant de session. Vous devrez également ajouter "ProxyPassReverseCookiePath/app1 /" (voir: http://www.humboldt.co.uk/2009/02/the-mystery-of-proxypassreverse.html) –

6

vous pouvez essayer

ProxyPass/https://localhost:8443/app1/ 
ProxyPassReverse/https://localhost:8443/app1/ 

avec la finale/

+1

Pouvez-vous inclure un peu plus d'informations? S'il vous plaît? – durron597

Questions connexes