====== Utiliser Apache comme proxy ======
Le module [[http://httpd.apache.org/docs/2.2/mod/mod_proxy.html|mod_proxy]] d'Apache permet de rendre visible des serveurs Web d'un réseau privé aux clients d'un autre réseau (publique par exemple).
La situation classique est d'avoir un serveur A dans une DMZ et un serveur B dans un réseau privé ; un client venant d'Internet (par exemple) ne pourra pas voir le serveur B et devra passer par A (qui fera office de proxy) pour voir le contenu de B.
Client ------ Serveur A ------ Serveur B
===== Cas où le serveur A peut avoir plusieurs enregistrements DNS =====
Dans ce cas, le serveur A portera 2 noms différents (configuré sur la même IP) et renverra le contenu associé aux noms.
Par exemple :
* l'adresse IP de A est 123.456.789.123
* l'adresse IP de B est 192.168.0.1
* 2 noms pointent sur cette adresse : a.exemple.org et b.exemple.org
Si le client demande le contenu de //a.exemple.org// alors le serveur A renverra le contenu local, si le client demande le contenu de //b.exemple.org// alors le serveur A servira de proxy et renverra le contenu fournit par B.
==== Configuration du serveur A ====
La différenciation se fait sur la directive //ServerName//. On déclare des hôte virtuel sur l'IP du serveur A, et pour chaque hôte on associe un //ServerName// différent. Les //ServerName// doivent être de vrais noms renseigné dans le DNS, avec lesquels un client peut se connecter sur le sevreur A.
NameVirtualHost 123.456.789.123:80
ServerName a.exemple.org
ServerAdmin webmaster@localhost
DocumentRoot /var/www/
Options FollowSymLinks
AllowOverride All
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
ServerName b.exemple.org
ProxyRequests Off
ProxyPreserveHost Off
ProxyPass / http://192.168.0.1/
ProxyPassReverse / http://192.168.0.1/
Order Deny,Allow
Allow from all
===== Cas où l'on ne souhaite rediriger qu'une partie de l'URL =====
Dans ce cas l'ensemble du contenu de B sera visible par une URL spéciale, dédié à B, par exemple //a.exemple.org/b//.
Dans notre exemple :
* l'adresse IP de A est 123.456.789.123
* l'adresse IP de B est 192.168.0.1
==== Configuration du serveur A ====
NameVirtualHost 123.456.789.123:80
ServerName a.exemple.org
ServerAdmin webmaster@localhost
DocumentRoot /var/www/
Options FollowSymLinks
AllowOverride All
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
# Suppresses the Via header
ProxyVia Off
ProxyRequests Off
Order deny,allow
Allow from all
ProxyPass /b/ http://192.168.0.1/
ProxyPassReverse /b/ http://192.168.0.1/