Activation du module proxy Apache

Le module Proxy d'apache va nous servir par exemple à rediriger un port local vers une adresse de type http://xx.domaine.tld.

L'avantage est que si les ports sont bloqués, vous pouvez quand même y acceder grâce à ce system.

Activation du module proxy Apache

Connectez vous sur votre serveur (mandataire), puis tapez :

$ sudo a2enmod proxy

$ sudo a2enmod proxy_http

 

Redémarrez ensuite Apache un petit coup

$sudo /etc/init.d/apache restart

Voila, c'est fait !

Configuration du routage

Ici, tout va se faire grâce au système d'hôte virtuel Apache.

Editez un fichier dans /etc/apache2/site-available/

$ sudo nano /etc/apache2/sites-available/monsite

Puis configurez votre hôte comme suit :

<VirtualHost *:80>
#
ServerName nomdedomaine.tld #
ProxyPreserveHost On
ProxyRequests off
ProxyPass / http://IPSERVEURWEBINTERNE/
ProxyPassReverse / http://IPSERVEURWEBINTERNE/
#
</VirtualHost>

 

Cela va permettre de rediriger toutes les requêtes sur nomdedomaine.tld en http vers le serveur IPSERVEURWEBINTERNE

C'est simple et efficace. Vous pouvez créer toutes vos autres redirections dans ce fichier, ou créer un fichier par redirection (plus propre mais plus contraignant). A vous de voir.

Une fois ces fichier créés, il vous faut activer les hôtes virtuels.

Faites

$ sudo a2ensite monsite

pour chaque fichier que vous avez créé.

Ensuite, rechargez la configuration Apache (pas besoin de redémarrer)

$ sudo /etc/init.d/apache2 reload

Tadam !

Il ne vous reste plus qu'à tester. De l'exterieur, essayez de joindre nomdedomaine.tld, tout doit fonctionner

Et voila, vous avez économisé plein d'adresses IP publiques ! Mais pourquoi utiliser plusieurs serveurs Web derrière une seule IP petits coquinous ? Ça, ça vous regarde...

Si jamais j'ai la problématique un jour, je configurerai ça pour de l'HTTPS (mais honnêtement j'espère jamais)

 

Et dans ce cas je rajouterai ça sur le blog, promis !  Voir juste au dessous !

la version https

Et oui, car finalement j'ai du m'y mettre :)

Tout d'abord, les limitations. Je n'ai réussit jusqu'alors qu'à configurer une connexion HTTPS entre le client et le reverse proxy.

Je n'ai pas réussit à avoir ensuite de l'HTTPS entre le reverse proxy et le vrai serveur web, ce qui veut dire que, au moins sur le réseau local, les données transitent en clair.

De mon point de vue ce n'est qu'un problème conceptuel, étant donné que le "réseau local" est en fait une liaison directe entre machines virtuelles sur le même hyperviseur, donc bon. Mais quand même, ce n'est pas très propre. Si jamais quelqu'un a une suggestion à ce sujet, qu'il me fasse signe :)

L'idée donc du reverse proxy en HTTPS, c'est que c'est le proxy qui va contenir les certificats https. Celui-ci va alors répondre à la place du serveur web, avec la bonne URL puique c'est un proxy, et transmettre ensuite les requêtes vers le serveur.

On a donc un schéma dans cette idée :

<Client> ====https====<Proxy>----http----<serveur web>

Et en plus, c'est assez simple en fait.

On considérera ici que vous avez déja généré des certificats propres pour votre site (éventuellement auto-signés).

Il vous faudra activer le SSL sur votre reverse proxy : 

$ sudo a2enmod ssl
$ sudo /etc/init.d/apache2 restart

Ensuite, placez vos certificats (clef publique, clef privée) dans le dossier /etc/apache2/ssl/.

$ sudo cp moncertificat.* /etc/apache2/ssl/

Créez l'hôte virtuel qui servira pour votre redirection :

sudo nano /etc/apache2/site-available/monproxySSL

Et remplissez le avec ceci :

 <VirtualHost *:443>

 # Décommentez cette ligne et indiquez-y l'adresse courriel de l'administrateur du site
#ServerAdmin webmaster@my-domain.com

 # Classique, votre nom de domaine
ServerName monsite.tld

 # Si jamais vous avez d'autres domaines renvoyant sur ce site, utilisez la dircetive ServerAlias
# Vous pouvez utiliser le joker * pour prendre en compte tout les sous-domaines
#ServerAlias www2.my-domain.com www.my-other-domain.com *.yet-another-domain.com

 # L'emplacement des logs.
ErrorLog /var/log/apache2/monsite.tld-error.log
LogLevel warn
CustomLog /var/log/apache2/monsite.tld-access.log combined

 # SSL magic
#
# Il est nécessaire d'activer SSL, sinon c'est http qui sera utilisé
SSLEngine On

 # On autorise uniquement les clefs de cryptage longue (high) et moyenne (medium)
# SSLCipherSuite HIGH:MEDIUM

 # On autorise SSLV3 et TLSv1, on rejette le vieux SSLv2
# SSLProtocol all -SSLv2

 # La clef publique du serveur :
SSLCertificateFile /etc/apache2/ssl/moncertificat-cert.pem

 # La clef privée du serveur:
# SSLCertificateKeyFile /etc/apache2/ssl/moncertificat-key.pem

 # Theses lines only apply of the rewrite module is enabled.
# This is a security enhancement recommanded by the nessus tool.
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]
</IfModule>
<IfModule mod_rewrite.c>
<IfModule mod_proxy.c>

 #Ne commentez jamais cette ligne, elle évite que votre serveur soit utilisé comme proxy par des gens mal-intentionnés.
ProxyRequests Off

 # Cetet option passe les nom d'hôte au serveur, ce qui vous permet d'utiliser également des hôtes virtuels sur le serveur principal.
ProxyPreserveHost On

 # Les lignes classiques de proxy. Comme dit au dessus, on passe le flux en http.
ProxyPassReverse / http://IPSERVEURWEB/
RewriteRule ^/(.*) http://IPSERVERUWEB/$1 [P,L]

 </IfModule>
</IfModule>

 # Autoriser l'accès au contenu à travers le proxy.
#Ne l'enlevez pas si vous voulez que le site fonctionne !
<Location />
Order deny,allow
Allow from all
</Location>

 </VirtualHost>
 

 <VirtualHost *:80>
# Cette partie va permettre de rediriger d'éventuelles requêtes en HTTP vers l'HTTPS
# Vous pouvez également configurer le proxy à la place de la règle de réécriture si vous voulez autoriser l'accès en HTTP
ServerName monsite.tld

 #ServerAlias www2.my-domain.com www.my-other-domain.com *.yet-another-domain.com

 # Theses lines only apply of the rewrite module is enabled.
# This is a security enhancement recommanded by the nessus tool.
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^{TRACE|TRACK}
RewriteRule .* - [F]
</IfModule>

 # On renvoit toutes les requêtes HTTP vers l'HTTPS.
Redirect permanent / https://monsite.tld/

 </VirtualHost>

N'oubliez pas bien sûr d'activer votre nouvel hôte virtuel :

$ sudo a2ensite monproxyssl
$ sudo /etc/init.d/apache2 reload

Et voila, votre reverse proxy doit fonctionner en HTTPS :)

Source : http://blog.héry.com/article9/configurer-un-reverse-proxy-apache-http-https

Écrire un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec une *

Quelle est le premier caractère du mot 7b2fr ? :