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
Julien
25 juin 2014 à 11:16 (UTC 1)
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