Outils pour utilisateurs

Outils du site


kb:linux:apache2:reverse_proxy_avec_https

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é!

kb/linux/apache2/reverse_proxy_avec_https.txt · Dernière modification: 2020/03/30 13:47 de beu