Table des matières
Reverse Proxy avec HTTPS
Principe
Si vous souhaitez héberger sous une même IP plusieurs services WEB qui sont soit incompatibles entre eux (versions de PHP par exemple), ou bien que certains services sont critiques, il est peut être préférables de séparer ces services WEB dans des machines distinctes.
L'objectif est d'avoir un Apache2 qui recevra toutes les requêtes HTTP et HTTPS et qui fera du proxy vers les autres machines via leur nom de domaines local (ou par leur adresses IP).
Installation et Configuration
Il faut évidemment installer Apache2 pour effectuer la manipulation
# apt-get install apache2
Puis activer les mods Apache2 pour effectuer le Reverse Proxy et le HTTPS
# a2enmod proxy # a2enmod proxy_http # a2enmod rewrite # a2enmod ssl # a2enmod headers
Puis on désactive les sites par défaut
# a2dissite 000-default.conf # a2dissite default-tls.conf
Puis il reste juste à créer la configuration du site
# nano /etc/apache2/site-available/monsite.conf
Et rentré ceci avec les modifications adéquates
<VirtualHost *:443> #########GENERAL######### ServerName domain.tld ###########SSL########### # Il est nécessaire d'activer SSL, sinon c'est http qui sera utilisé SSLEngine On # Les clefs du serveur : SSLCertificateFile /path/to/key/fullchain.pem SSLCertificateKeyFile /path/to/key/privkey.pem # On autorise TLSv1.2, on rejette les autres SSLProtocol -all +TLSv1.2 # On autorise uniquement les algos de chiffrement élevé (high). SSLCipherSuite HIGH:!kRSA:!kDHr:!kDHd:!kSRP:!aNULL:!3DES:!MD5 # On fournit l'entête HSTS Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains;" ##########PROXY########## <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK) RewriteRule .* - [F] </IfModule> <IfModule mod_rewrite.c> <IfModule mod_proxy.c> ProxyRequests Off ProxyPreserveHost On ProxyPass / http://domain.lan/ ProxyPassReverse / http://domain.lan/ RewriteRule ^/(.*) http://domain.lan/$1 [P,L] </IfModule> </IfModule> <Location /> Order deny,allow Allow from all </Location> ###########LOG########### ErrorLog /var/log/apache2/domain.tld-error.log LogLevel warn CustomLog /var/log/apache2/domain.tld-access.log combined </VirtualHost> # Redirection des requettes HTTP vers l'HTTPS. <VirtualHost *:80> ServerName domain.tld <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_METHOD} ^{TRACE|TRACK} RewriteRule .* - [F] </IfModule> Redirect permanent / https://domain.tld/ ###########LOG########### ErrorLog /var/log/apache2/domain.tld-error.log LogLevel warn CustomLog /var/log/apache2/domain.tld-access.log combined </VirtualHost>
Il suffira d'acitiver le site
# a2ensite monsite.conf
puis de relancer apache2
# service apache2 restart
Et le tour est joué!