Note rapide pour la mise en place d’un serveur mandataire inverse – reverse proxy – avec Apache. Le but est d’avoir un serveur web frontal – le serveur mandataire – qui reçoit les requêtes et va en rediriger certaines vers un ou plusieurs autres serveurs web, par soucis de sécurité notament. Dans mon cas, j’ai une application web PHP/DB2 utilisée par certaines personnes uniquement sur le réseau local, et mon chef me demande de l’installer sur une de nos machines en DMZ pour les agents extérieurs. Il me semblait plus judicieux de s’affranchir d’ajouter une autre instance de cette application qui devrait être maintenue, sauvegardée, etc.
Apache sait faire cela et très simplement. Il suffit pour cela de vérifier que les modules proxy
et proxy_http
sont activés dans httpd.conf
sur la machine qui fera office de serveur mandataire. On ajoute ou décommente ces lignes :
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so
Ensuite, on ajoute les directives du proxy dans httpd.conf
:
ProxyPass /appweb http://autremachine/appweb ProxyPassReverse /appweb http://autremachine/appweb
Ou alors dans un virtualhost :
<VirtualHost *:80> ServerName serveur-mandataire ProxyPass /appweb http://autremachine/appweb ProxyPassReverse /appweb http://autremachine/appweb </VirtualHost>
Après redémarrage du serveur, tout ce qui arrive sur http://serveur-mandataire/appweb est redirigé – en transparence – vers http://autremachine/appweb.