Configurer un reverse proxy (Azure)

De Wiki1000

L'utilisation d'un reverse proxy permet d'exposer certaines fonctionnalités du serveur d'application 1000 sans pour autant exposer l'ensemble de l'application.

Vue de l'architecture

Configuration d'un reverse proxy sur Azure

Paramétrage du VPN

On considère à ce stade que votre VM azure est paramétrée pour avoir accès au VPN de votre Réseau Local et que la résolution d'IP fonctionne dans les deux sens  : Azure > Local Network & Local Network > Azure.

Tutoriel VPN Site To Point : http://www.cloudcomputingadmin.com/articles-tutorials/windows-azure/configure-client-based-remote-access-vpn-windows-azure-virtual-networks.html

Paramétrage de la VM Azure

Afin d'utiliser une VM azure comme hébergeur du reverse proxy, il faut ajouter un point de terminaison pour accéder à HTTPS.

Il faudra également ouvrir un le port 443 dans le firewall.

Voila l'accès au port 443 est ouvert dans le CloudService et dans le firewall.

Paramétrage d'Apache HTTPS/Mobiles Filter sous windows

Pour pouvoir utiliser la fonction Reverse Proxy d'Apache en HTTPS voici les modules à activer :

  • LoadModule headers_module modules/mod_headers.so
  • LoadModule proxy_module modules/mod_proxy.so
  • LoadModule proxy_connect_module modules/mod_proxy_connect.so
  • LoadModule proxy_http_module modules/mod_proxy_http.so
  • LoadModule rewrite_module modules/mod_rewrite.so
  • LoadModule ssl_module modules/mod_ssl.so

Ensuite il faudra paramétrer le VirtualHost dans le fichier httpd.conf

Listen 443
<VirtualHost *:443> 
      ServerAdmin [email protected]
      ServerName reverseproxy.cloudapp.net
      ErrorLog "c:/Program Files (x86)/Apache Software Foundation/Apache2.2/logs/reverseproxy-error.log"
      CustomLog "c:/Program Files (x86)/Apache Software Foundation/Apache2.2/logs/reverseproxy-access.log" combined
      SSLEngine On
      ProxyRequests Off
      ProxyPreserveHost On
      RewriteEngine On
      RewriteRule ^/mobiles - [L]
      RewriteRule ^mobiles/([^/]*) mobiles/$1 [L,NC]
      RewriteRule . /mobiles [R=301,L]
      SSLCipherSuite HIGH:MEDIUM
      SSLProtocol all -SSLv2
      SSLCertificateFile "c:/Program Files (x86)/Apache Software Foundation/Apache2.2/ssl/reverseproxy.cloudapp.net.cer"
      SSLCertificateKeyFile "c:/Program Files (x86)/Apache Software Foundation/Apache2.2/ssl/reverseproxy.cloudapp.net.key"
      <Location>
         ProxyPass http://192.168.0.3:8081/
         ProxyPassReverse http://192.168.0.3:8081/
      </Location>
</VirtualHost>

Dans cette exemple on filtre les URLs afin de limiter l'exposition du service aux requêtes "mobiles" c'est une nécessité dans ce type de configuration car les sauts de serveurs grève les performances et plus l'application est légère meilleur seront les temps de réponse.