2010-08-25 4 views
3

L'utilisation d'un serveur virtuel Apache et mod_proxy je veux accéder à une application java (monappli) disponible dans une instance de la jetée sur le port 8080.jetée via apache mod_proxy

Avec ProxyPass/localhost:8080/ sur ma configuration apache VirtualHost je peux accéder à l'application en cours d'exécution dans jetty avec www.mydomain.com/myapp mais je veux que l'application soit accessible à www.mondomaine.com.

Essayer avec ProxyPass/localhost:8080/myapp Impossible de trouver l'application car la demande devient www.mondomaine.com/myappmyapp/.

ensuite essayé avec:

<Location /> 
     ProxyPass localhost:8080/myapp/ 
     SetEnv force-proxy-request-1.0 1 
     SetEnv proxy-nokeepalive 1 
</Location> 

Je peux accéder à l'application, mais seulement pour la première demande. Après avoir lu plusieurs fois wiki.eclipse.org/Jetty/Tutorial/Apache et le doc apache mod_proxy, la seule façon que j'ai réussi à utiliser l'application correctement à partir de www.mydomain.com/. com est avec la configuration suivante:

<Location /myapp/> 
     ProxyPass localhost:8080/myapp/ 
     SetEnv force-proxy-request-1.0 1 
     SetEnv proxy-nokeepalive 1 
</Location> 

<Location /> 
     ProxyPass localhost:8080/myapp/ 
     SetEnv force-proxy-request-1.0 1 
     SetEnv proxy-nokeepalive 1 
</Location> 

de sorte que la demande est transmise à l'application de jetée dans les deux cas.

Je suis tout à fait nouveau à apache et jetty et je suis assez sûr qu'il y a une manière meilleure et plus élégante d'atteindre le même résultat. En fait apache se plaint en disant:

[warn] worker localhost:8080/myapp/ already used by another worker 
+0

Je devais supprimer tous http: // avant localhost et ainsi de suite sinon ils ont été détectés comme des liens hypertexte et non autorisés sur le poste – Pablo

Répondre

1

Le problème est que lorsque vous déployez votre application dans la jetée du chemin contexte/myapp, il va générer tous liens en conséquence. Apache mod_proxy fait toute la réécriture au niveau HTTP (en-têtes) et ne fera rien avec le corps de la réponse, le gardant tel quel.

Si cela ne vous dérange pas le/myapp coller autour, vous pouvez activer mod_rewrite sur le fait de suivre deux lignes dans votre bloc Localisation:

RewriteEngine on 
RewriteRule ^/myapp/(.*)$ /$1 [P] 

Si vous souhaitez vous débarrasser de/myapp pour une bonne , alors la seule option qui reste (en supposant que vous ne voulez pas gaspiller la puissance du processeur sur mod_proxy_html) est de configurer des hôtes virtuels, et de déployer des applications sur des hôtes virtuels avec le chemin de contexte de /.

0

Si vous voulez que votre webapp soit accessible à la racine de votre site, ce que vous avez besoin est de déployer l'application Web dans la racine du conteneur. Habituellement, cela se fait en appelant le war fichier ROOT.war au lieu de myapp.war (bien que cela dépend finalement de la configuration de votre déployeur Jetty, qui peut être plus complexe que la valeur par défaut).

+1

Oui cela fonctionne à partir de la racine de la jetée, mais je voudrais avoir plus d'une application en cours d'exécution. – Pablo

+0

Les chemins dans Jetty doivent correspondre aux chemins dans Apache Httpd. – Bruno

0

Oui cela fonctionne à partir de la racine de la jetée, mais j'aimerais avoir plus d'une application en cours d'exécution. La configuration de myapp est sous le dossier contexte de la jetée:

<Configure class="org.mortbay.jetty.webapp.WebAppContext"> 
    <Set name="contextPath">/mvc-showcase</Set> 
    <Set name="war"><SystemProperty name="jetty.home"/>/webapps/mvc-showcase.war</Set> 
</Configure> 

ma version de la jetée est 6.1.22

Questions connexes