Fr:ReverseProxy

Aus YaCyWiki
Wechseln zu: Navigation, Suche

Objectif

Avec un mandataire inverse (reverse proxy), on peut intégrer les contenus de pages disponible à d’autres adresses accessible (uniquement ou non) par le mandataire comme s’il les servait lui-même. Concrètement ça permet de servir par l’URL http://yacy.example.com/myfirstpeer/ le contenu réellement servi par la suivante http://mypeer.dyndns.org:8090. Ainsi on peut intégrer YaCy dans un service (existant ou non) web (port http,80 ou https,443). Ainsi même si le trafic est limité au web, Yaci peut toujours être utiliser. Attention: Il n’est pas possible de faire fonctionner actuellement la communication pair à pair Yacy en passant par un mandataire inverse. Il est toujours nécessaire de permettre une connexion directe sur le port logiciel du nœud (par défaut 8090).

Prérequis pour Apache

  • Apache 2
  • mod_proxy (pour permettre à apache d’être mandataire)
  • mod_proxy_html (pour permettre à apache d’exercer son mandat pour des pages HTML)

Configuration

Activation des modules

Les modules s’activent via soit via les commandes (en tout cas sous Debian) a2enmod proxy et a2enmod proxy_html soit en ajoutant les deux instructions suivantes dans la configuration d’Apache (le « bon » endroit dans la configuration et l’emplacement des fichiers dépendent de la distribution utilisée) :

LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so
LoadFile /usr/lib/libxml2.so.2
LoadModule proxy_html_module /usr/lib/apache2/modules/mod_proxy_html.so

Configuration du module proxy

<IfModule mod_proxy.c>
       ProxyRequests Off
       ProxyVia On
</IfModule>

ProxyRequests Off interdit à Apache de se comporter comme un mandataire simple (le proxy que l’on configure dans le navigateur par exemple). Si cette fonctionnalité était activée sans paramétrage restreignant son usage, vous créerez un mandataire ouvert (open proxy) permettant à n’importe qui d’utiliser votre serveur pour naviguer sur l’Internet… en votre nom :-/

Configuration du mandataire inverse

La configuration suivante (donnée à titre d’exemple) correspond à un cas d’utilisation où le service web Yacy est servi dans un hôte virtuel dédié répondant à « yacy.example.com ». Dans cette configuration toutes les demandes à http://yacy.example.com/myfirstpeer/ sont transmises (et vice-versa) à http:// mypeer.dyndns.org:8090/ de manière transparente. Afin que les URL présentes dans les pages générées par Yacy pointent vers l’adresse web, elles sont remplacées à la volée par ProxyHTMLURLMap. Ainsi,dans toutes les en-têtes HTTP http://mypeer.dyndns.org:8090/ est remplacé par http:// yacy.example.com/myfirstpeer/. RequestHeader unset Accept-Encoding s'occupe d’exclure la compression gzip (puisque si c’est compressé, le remplacement d'URL ne fonctionnera pas).

<VirtualHost *>
       ServerAdmin webmaster@example.com
       ServerName yacy.example.com
       DocumentRoot /var/www/yacy/
       SetOutputFilter proxy-html
       #ProxyHTMLLogVerbose On
       ProxyHTMLExtended On
       ProxyPass /myfirstpeer http://mypeer.dyndns.org:8090/
       ProxyHTMLURLMap http://mypeer.dyndns.org:8090 /myfirstpeer
       <Location /myfirstpeer/>
               ProxyPassReverse /
               ProxyHTMLURLMap / /myfirstpeer/
               ProxyHTMLURLMap /myfirstpeer /myfirstpeer
               RequestHeader    unset  Accept-Encoding
       </Location>
       ProxyPass /mysecondpeer http://mypeer.dyndns.org:8091/
       ProxyHTMLURLMap http://mypeer.dyndns.org:8091 /mysecondpeer
       <Location /mysecondpeer/>
               ProxyPassReverse /
               ProxyHTMLURLMap / /mysecondpeer/
               ProxyHTMLURLMap /mysecondpeer /mysecondpeer
               RequestHeader    unset  Accept-Encoding
       </Location>
</VirtualHost>


TODO

  • Faire ré-écrire les adresses dans les feuilles de style (CSS) et le javascript.

Références