Apache 2 : configurer un mandataire inverse (reverse proxy)

Récemment, j’ai eu besoin d’utiliser un serveur Apache 2.2 pour faire suivre toutes les requêtes HTTP entrantes vers un serveur installé sur un réseau local. Le tout sans que le navigateur client s’en aperçoive et en modifiant l’URL.

Bien évidemment, c’est une combinaison de fonctionnalités qu’Apache sait réaliser, mais qui demande un minimum de connaissances sur la configuration d’Apache et qui peut conduire temporairement à un arrachage de cheveux. C’est pourquoi ce petit article sans prétention résume la démarche en 2 étapes.

Mettre en place un reverse proxy

Tout d’abord on veut faire suivre la requête vers un serveur masqué à l’utilisateur. Je n’entrerai pas dans les motivations de ce choix (sécurité, équilibrage de charge, …). En tout cas, c’est le module mod_proxy d’Apache qu’il nous faut. Pour l’activer, rien de plus simple : dans le fichier de configuration d’Apache, il faut ajouter les 3 lignes suivantes :

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_http_module modules/mod_proxy_http.so

ProxyRequests On

Notez également que des sécurisations sont certainement nécessaires.

Modifier les URL à la volée

Dans notre exemple, on va supposer que toutes les requêtes qui arrivent sur Apache doivent être envoyées vers http://192.168.0.10:8080/url_modifiee.

Cela signifie que toute URL /une_url_au_hasard?param1=toto doit être renvoyée vers http://192.168.0.10:8080/url_modifiee/une_url_au_hasard?param1=toto.

C’est là qu’intervient maintenant le module mod_rewrite :

LoadModule rewrite_module modules/mod_rewrite.so

RewriteEngine On

RewriteRule ^/$ http://192.168.0.10:8080/url_modifiee [P,L]

On remarquera le drapeau P qui est fondamental : c’est lui qui indique au moteur de réécriture qu’il faut faire suivre la requête via le proxy.

Conclusion

Cet article n’a qu’effleurer le sujet, en particulier au niveau de la sécurité. On ne saurait trop conseiller de lire exhaustivement la documentation de mod_proxy.


Vous pouvez suivre les réponses à cet article grâce au fil RSS 2.0.
Vous pouvez laisser un commentaire, ou créer un trackback depuis votre propre site.
Pour la tranquilité de tous, les commentaires sur ce blog sont modérés.

Pas de commentaire pour l'instant, soyez le premier à commenter cet article


Laisser un commentaire. Pour la tranquilité de tous, les commentaires sur ce blog sont modérés.

XHTML: Vous pouvez utiliser ces balises HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>