Reverse proxy avec Apache 2

Le grand avantage de travailler sur une plateforme virtuelle avec un hyperviseur c’est de pouvoir créer des serveurs virtuels dédiés à ce que l’on veut faire. Mon serveur héberge plusieurs serveurs, un serveur pour le blog de perpinux, mon propore blog, mes courriels, un serveur de base de données mysql etc etc…

Cela me permet de séparer les rôles en plusieurs machines et m’offre une très grande souplesse d’administration en cas de panne logicielle ou matérielle.

Le tout protégé par pare-feu qui fut à l’origine de mon problème. En effet celui-ci ne permet de transférer le port 80 (port par défaut pour l’hébergement web) sur une seule machine.

Quid des autres serveurs web ?

Le proxy inverse dans la langue de molière fut ma solution. J’ai créé une machine avec apache configurer en reverse proxy. C’est le même fonctionnement qu’un proxy classique mais à l’envers. Au lieu de rediriger le reseau local vers internet, il redirige tout ce qui vient d’internet à destination du réseau local. Cela permet de ne pas avoir ses serveurs web directement exposés au feu.

Cette solution est très simple à mettre en place.

j’ai installé une machine virtuelle avec ma distribition préférée et un apache. J’ai activé le mode proxy:

$sudo a2enmod proxy
$sudo a2enmod proxy_http

Pour vérifier si les modes sont bien actifs, il faut jeter  un coup d’oeil dans /etc/apache2/mod-enabled/

$ls /etc/apache2/mods-enabled/
alias.conf            autoindex.load  mime.load           setenvif.conf
alias.load            cgid.conf       negotiation.conf    setenvif.load
auth_basic.load       cgid.load       negotiation.load    ssl.conf
authn_file.load       deflate.conf    proxy.conf          ssl.load
authz_default.load    deflate.load    proxy_connect.load  status.conf
authz_groupfile.load  dir.conf        proxy_http.load     status.load
authz_host.load       dir.load        proxy.load
authz_user.load       env.load        reqtimeout.conf
autoindex.conf        mime.conf       reqtimeout.load

Ensuite rien de plus simple c’est le même fonctionnement qu’un apache en mode normal avec  des Vhost pour chaque site à rédiriger.

Dans /etc/apache/sites-avaibles/  j’ai placer un fichier pour chaque sites, par exmple site1.org et site2.net :

$sudo nano /etc/apache/sites-avaibles/site1
<VirtualHost 192.168.XX.XX:80> #adresse ip locale du serveur reverse proxy
  ProxyRequests Off
  ProxyPreservehost on
  ServerName  site1.org
  ServerAlias www.site1.org
  ProxyPass / http://192.168.XX.XX/ #adresse ip locale du serveur web
  ProxyPassReverse / http://192.168.XX.XX/ #adresse ip locale du serveur web
  # ProxyPassReverseCookieDomain 192.168.XX.XX site1.org
  ## LogLevel debug
</VirtualHost>
$sudo nano /etc/apache/sites-avaibles/site2
<VirtualHost 192.168.XX.XX:80> #adresse ip locale du serveur reverse proxy
  ProxyRequests Off
  ProxyPreservehost on
  ServerName  site2.net
  ServerAlias www.site2.net
  ProxyPass / http://192.168.XX.XX/ #adresse ip locale du serveur web
  ProxyPassReverse / http://192.168.XX.XX/ #adresse ip locale du serveur web
  # ProxyPassReverseCookieDomain 192.168.XX.XX site2.net
  ## LogLevel debug
</VirtualHost>

Voilà nos deux Vhosts sont près est configuré, il reste plus qu’a les activer et redémarrer apache pour que les modifications soient prises en compte.

$sudo a2ensite site1
$sudo a2ensite site2
$sudo /etc/init.d/apache2 restart

Une dernière modification sur mon pare-feu pour faire un transfert du 80 sur le serveur reverse proxy. Grâce à se système je peux séparer tout mes serveurs web sur différentes machines virtuelles et ainsi ne pas mettre tout mes oeufs dans le même panier.

Vus : 3286
Publié par Olivier Delort : 73