Reverse proxy Apache

Introduction

Nous allons voir comment installer une instance d’Apache 2 et comment la configurer pour en faire un reverse proxy web. Il aura la charge de publier un « site1″ en HTTP pointant sur un de vos serveurs internes, et un « site2″ en HTTPS pointant sur un de vos serveurs internes qui lui est en HTTP.

Nous utiliserons le gestionnaire de paquets de Debian pour l’installer. Pourquoi ne pas l’installer depuis les sources ? Parce que c’est plus simple et que la version disponible dans les dépôts de Debian est suffisamment à jour pour faire ce que l’on souhaite avec.

Comme d’habitude, ce qui va suivre s’appuie sur une Debian Squeezee.

Installation d’Apache 2

Grâce à Aptitude, rien de plus simple :

sudo aptitude install apache2

Configuration

Commencez par activer les modules qui nous intéressent :

sudo a2enmod ssl

sudo a2enmod proxy

sudo a2enmod proxy_http

Ensuite désactivez la publication du site par défaut :

sudo a2dissite default

Créez le fichier rev-proxy dans /etc/apache2/sites-available dont voici le contenu :

<VirtualHost *:80>

ServerAdmin webmaster@localhost

ServerName www.site1.fr

ServerAlias site1.fr

 

ProxyPass / http://fqdn-de-votre-serveur-interne/

ProxyPassReverse / http://fqdn-de-votre-serveur-interne/

 

ErrorLog ${APACHE_LOG_DIR}/error.log

LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined

 

</VirtualHost>

Créez le fichier rev-proxy-ssl dans /etc/apache2/sites-available dont voici le contenu :

<IfModule mod_ssl.c>

<VirtualHost _default_:443>

ServerAdmin webmaster@localhost

ServerName www.site2.fr

ServerAlias site2.fr

 

ErrorLog ${APACHE_LOG_DIR}/ssl_error.log

LogLevel warn

CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined

 

SSLEngine on

SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem

SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

 

<FilesMatch « \.(cgi|shtml|phtml|php)$ »>

SSLOptions +StdEnvVars

</FilesMatch>

 

BrowserMatch « MSIE [2-6] » \

nokeepalive ssl-unclean-shutdown \

downgrade-1.0 force-response-1.0

BrowserMatch « MSIE [17-9] » ssl-unclean-shutdown

 

ProxyPass / http://fqdn-de-votre-serveur-interne/

ProxyPassReverse / http://fqdn-de-votre-serveur-interne/

 

</VirtualHost>

</IfModule>

Activez maintenant les sites nouvellement crées et redémarrez Apache :

sudo a2ensite rev-proxy

sudo a2ensite rev-proxy-ssl

sudo invoke-rc.d apache2 restart

Et voilà le travail !!!

A des fins de test vous pouvez faire pointer votre reverse proxy vers google, consultez alors l’URL de votre reverse proxy et vous verrez…

1 commentaire

  1. Julien

    Bonjour,

    Je vous explique mon problème.
    J’utilise un reverse proxy Apache où est redirigé une vingtaine de sites.
    Un seul site est configuré pour une redirection en HTTPS.
    Le problème est que l’ensemble des sites en HTTP sont redirigés vers le site HTTPS dès qu’on rajoute https:// devant l’adresse.
    Exemple:
    http://test.fr est redirigé vers http:// test.fr (Résultat normal)
    https://testsecure.fr est redirigé vers https://testsecure.fr (Résultat normal)
    https://test.fr est redirigé vers https://testsecure.fr (Probleme!!)

    Est-ce que j’ai été assez clair dans mes explications? Merci de votre aide.

    Julien

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.


cinq × = 5

Vous pouvez utiliser les balises HTML suivantes : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>