Transférer des requêtes Apache (port 80) à Tomcat (port 8080)?

8

Je souhaite exécuter une application Tomcat via une URL de site Web standard, telle que www.xyz.com. Je voudrais que la racine de ce domaine fasse office de répertoire de base pour l'application Web, de sorte que chaque demande www.xyz.com/a/b/cdevienne www.abc.com:8080/myApp/a/b/c. Idéalement, je pourrais le faire de manière transparente et uniquement pour certaines webapps.

www.abc.com:8080 devrait toujours répondre aux demandes.

Que dois-je faire pour que cela se produise?

Stefan Kendall
la source

Réponses:

14
ProxyPass        / http://www.abc.com:8080/myApp/
ProxyPassReverse / http://www.abc.com:8080/myApp/

En savoir plus sur mod_proxy

ptman
la source
c'est la meilleure solution pour le faire
Mike
1
Pour aborder le côté "uniquement pour certaines webapps", approfondissez simplement le chemin de redirection. Donc: ProxyPass / a / b / c abc.com:8080/myApp/a/b/c ProxyPassReverse / a / b / c abc.com:8080/myApp/a/b/c Pour proxy tout sauf certains chemins, laissez la ligne ProxyPassReverse mais remplacez les lignes ProxyPass par RewriteRules (en veillant à utiliser l'option [P] pour proxy plutôt que pour rediriger), et établissez des règles antérieures pour ne pas proxy ces chemins. RewriteRule / notproxied - [L] RewriteRule /(.*) abc.com:8080/myApps/$1 [P] ProxyPassReverse / abc.com:8080/myApp
Jeremy M
où ajouter ces lignes?
Mina Michael
@MinaMichael La documentation de mod_proxy indique: Contexte: configuration du serveur, hôte virtuel, répertoire
ptman
3

Une méthode plus simple pour ce faire consiste à simplement ajouter une entrée d'hôte virtuel dans votre fichier de configuration Apache. Généralement situé dans / etc / httpd / conf, ajoutez quelque chose comme ceci à la fin de la section Virtual Host:

<VirtualHost X.X.X.X:80>
ServerName tomcatpage.yourdomain.com
ServerAlias tomcatpage.yourdomain.com
Redirect permanent / http://tomcatpage.yourdomain.com:8080/
</VirtualHost>

Redémarrez votre service Apache et vous avez terminé.


la source
3

Vous pouvez utiliser mod_rewrite dans Apache pour ce faire. Chargez mod_rewrite dans votre Apache et dans votre vhost www.xyz.com ajoutez la règle suivante:

RewriteRule ^/(.*) http://www.abc.com:8080/myApp/$1

Cela devrait faire la magie.

Plus d'informations sur mod_rewrite ici .

EDIT : Afin de conserver le nom du site dans les navigateurs, utilisez également mod_proxy en ajoutant simplement un [P] à la fin de la RewriteRule:

RewriteRule ^/(.*) http://www.abc.com:8080/myApp/$1 [P]

Cela forcera Apache à agir en tant que proxy pour cette URL au lieu de simplement réécrire l'URL.

Marco Ramos
la source
Cela provoque la redirection du navigateur. Cela fonctionne, mais je préférerais que le site apparaisse www.xyz.comdu côté de l'utilisateur.
Stefan Kendall
1
utilisez également mod_proxy, et à la fin de la RewriteRule ajoutez un [P], comme ceci: RewriteRule ^ / (. *) abc.com:8080/myApp/$1 [P]. J'ai également modifié la réponse ci-dessus pour inclure ces informations.
Marco Ramos