Toolinux Linto.AI OpenPAAS OBM Hubl.IN Linagora

Configuration Apache : du bon usage de RedirectMatch et de mod_proxy

lundi 19 mars 2012

RedirectMatch

La clause RedirectMatch permet de faire des redirections basées sur une expression régulière. Le cas d’utilisation le plus classique quand on fait un proxy vers une application hébergée dans un serveur JEE est de rediriger la racine / vers le répertoire de l’application /appli/ :

RedirectMatch ^/$ /appli/

mod_proxy

Le module mod_proxy permet de passer les requêtes à un autre serveur, au hasard un serveur JEE :

ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/

Cohabitation

Si vous mettez les deux configurations présentées ci-dessus ensemble, la redirection vers /appli/ ne fonctionnera plus. Alors qu’elle fonctionne sans mod_proxy.

Et c’est parti pour quelques heures de doute sur la condition humaine, jusqu’à ce qu’une recherche sur internet vous amène sur cet article.

La clé du mystère est que quand ProxyPass est configuré sur "/", cette clause prévaut sur les autres, et donc la requête est transmise avant que la redirection ne soit effectuée.

La solution est donc de limiter le champ d’action du proxy :

RedirectMatch ^/$ /appli/
ProxyPass /appli/ http://localhost:8080/appli/
ProxyPassReverse /appli/ http://localhost:8080/appli/

- Clément OUDOT