Pierre Porcheret




Voir la liste des articles



25 04 2016


Reverse proxy apache

Prérequis 

Installer apache2

#aptitude install apache2

Connaitre sa version d’apache2

#apache2 –v

Une fois apache2 installé, les dossiers qui vont concerner le reverse proxy sont :

/etc/apache2/sites-available/

Dans ce dossier se trouve les configurations des sites (activés ou non activés)(les Virtual Host)

/etc/apache2/sites-enabled/

Dans ce dossier se trouve les configurations des sites activés

/etc/apache2/mods-available/

Dans ce dossier nous trouvons les modules d’apaches installés (activés ou non activés)

/etc/apache2/mods-enabled/

Dans ce dossier nous trouvons les modules d’apaches activés

Pour ajouter un site, créer un fichier de configuration dans /etc/apache2/sites-available/ et  l’activer.

Exemple :

cd /etc/apache2/sites-available/

nano site1

(écrire sa configuration dans le fichier site1)

a2ensite site1

(Ici on active le site)

service apache2 restart

Pour ajouter un module,

cd /etc/apache2/mods-available/

a2enmod <nom_mod> (exemple a2enmod proxy_http)

service apache2 restart

Cas et configurations possible

Pour un site hébergé sur la machine

<VirtualHost *:80>

ServerName site.domaine.com

DocumentRoot /chemin/du/site/

</VirtualHost>

Site sur une autre marchine (il faut installer les mod proxy et proxy_http)

<VirtualHost *:80>

ServerName site.domaine.com

ProxyPreserveHost On

ProxyRequests off

ProxyPass / http://ip.de.la.machine

ProxyPassReverse / http://ip.de.la.machine

</VirtualHost>

Forcer un site en https (il faut installer le mod rewrite)

Parfois nous avons besoin qu’un site soit en http en LAN et https depuis l’exterieur, un reverse proxy peut forcer d’utiliser le site en https avec cette configuration :

<VirtualHost *:80>

ServerName site.domaine.com

RewriteEngine On

RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]

</VirtualHost>

L’avantage de cette méthode est qu’il retranscrit toutes les urls en https pour le visiteur mais nous n’avons pas besoin de modifier la configuration directement dans le site  (pour les liens, ou autres…)

Transmettre les ip visiteur vers le serveur web

Parfois nous avons besoin de récupérer les ip des clients (pour de la sécurisation, les logs ou pour des stats de visiteurs) mais le souci c’est que du coup l’IP visiteur deviens l’adresse du reverse proxy.

Pour palier a cela,

  • Si votre apache est d’une version supérieure ou égale a la 2.4

Installer sur le serveur web le mod remoteip

  • Pour les version inferieur il faut installer le mod rpaf et le configurer comme ci-dessous :
nano /etc/apache2/mods-enabled/rpaf.conf
<IfModule rpaf_module>

    RPAFenable On

    RPAFsethostname On

    RPAFproxy_ips 127.0.0.1 IP.DU.REVERSE.PROXY

    RPAFheader X-Forwarded-For

</IfModule>

Il faut ensuite installer le mod headers sur le reverse proxy

Relancer les services apaches sur les deux serveurs, et vérifier que les IP sont bien celles des visiteurs et non du reverse proxy.


categorie :