====== 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/