Vous êtes sur la page 1sur 10

Configurer un reverse proxy Apache (HTTP/HTTPS) –... https://wiki.maxcorp.org/configurer-un-reverse-proxy-...

MON WIKI
( H T T P S : / / W I K I . M A X C O R P. O R G )

Et oui, c’est ce dont on va parler ici. Comme ce n’est peut être pas très clair pour tout le monde,
je vais me permettre une toute petite digression pour expliquer ce qu’est le routage, et plus
précisément ce que j’appelle le routage par noms de domaine.

1 of 10 10/3/23, 16:54
Configurer un reverse proxy Apache (HTTP/HTTPS) –... https://wiki.maxcorp.org/configurer-un-reverse-proxy-...

Mais de rien.
Qu’est ce que le routage (http://fr.wikipedia.org/wiki/Routage) ? Ca consiste à se servir d’une
unique machine (comunément appelée “le routeur”) pour diriger des flux réseau vers différents
autres matériels.
Ca sert le plus simplement du monde sur Internet, pour router les différents sous réseaux. Vous
voulez joindre truc.truc.truc.truc, mais vous avez comme IP machin.machin.machin.machin, alors
un routeur va pouvoir vous dire :
“Pour aller vers truc, c’est à gauche, mais si c’est pour aller vers bidule, c’est à droite. Quand à toi
machin, tu es au milieu”.
Ok, c’est résumé très vite pour les puristes, mais l’idée est là
Il existe différents autres types de routage. On utilise ce terme parce que l’idée de donner des
routes (ou des chemins) pour diriger des flux reste la même.
Une machine (routeur, PC, serveur, …) reçoit un flux, et à partir de différents critères choisit de
rediriger ce flux vers un autre matériel du réseau, l’objectif final étant bien sûr que ce flux arrive à
destination de manière sûre.

On y arrive.
Un nouvel article (http://wiki.maxcorp.org/configurer-un-reverse-proxy-avec-haproxy-http-https/)
pour utiliser haproxy en tant que reverse-proxy, logiciel plus léger et plus adapté qu’apache à cet
usage.
Or donc, si vous avez plusieurs serveurs web mais une seule connexion Internet, alors vous avez
sans doute déjà eu cette problématique.
Comment joindre plusieurs sites web sur différents serveurs depuis les Internet ?
La solution qui s’impose directement, c’est du routage de port.
Ce routage particulier consiste à router différents flux reçus depuis Internet vers des machines à
l’intérieur de votre réseau local en se basant sur les ports réseaux utilisés. Ce n’est pas le lieu
pour décrire un port réseau. Voyez ça comme une porte. Vous rentrez dans la même maison, mais
selon que vous utilisiez la porte d’entrée ou la véranda, vous êtes “redirigés” vers une pièce
différente de la maison.
Ce type de routage présente un inconvénient certain : chacun de vos utilisateurs doit spécifier la
porte qu’il veut utiliser pour joindre le bon serveur.
En général, ça consiste à taper nomdedomaine.tld:port dans votre navigateur, ce qui n’est pas

2 of 10 10/3/23, 16:54
Configurer un reverse proxy Apache (HTTP/HTTPS) –... https://wiki.maxcorp.org/configurer-un-reverse-proxy-...

très pratique, et difficile à expliquer à vos clients. (Et oubliez de suite expliquer ça à Google and
co)
C’est là qu’intervient ce super outil, le reverse proxy, ou mandataire inverse
(http://fr.wikipedia.org/wiki/Reverse_proxy). Nous allons voir ici comment l’utiliser avec Apache
(http://www.apache.org/), un serveur web populaire. Il est sans doute possible de le faire
également avec NGinX ou lightHTTPD, mais ce n’est pas le sujet
Le mandataire inverse va regarder le site que vous voulez joindre, et vous rediriger vers le bon
serveur directement. Il servira ensuite d’intermédiaire sur le réseau entre vous et le serveur.

Voila voila !

Pour commencer, il va falloir définir un serveur mandataire. C’est sur ce serveur que nous allons
configurer le mandataire inverse.
Il peut héberger lui-même des sites Internet, ou vous pouvez l’utiliser uniquement comme
mandataire, ça n’a pas d’importance. Si vous utilisez cette solution à des vues industrielles,
mieux vaut prévoir un serveur robuste, puisqu’il supportera toutes les requêtes vers tous vos
sites web.
Ensuite, il vous faut configurer votre routeur/machinbox© pour rediriger tout le flux web (port 80)
vers le serveur mandataire. Ceci se fait grâce à un routage de port classique. Toutes les requêtes
web arriveront maintenant sur ce serveur, qui va décider quoi en faire.
En théorie on devrait pouvoir faire la même chose pour l’HTTPS, mais vu qu’il y a quand même des
contraintes de certificats et que je n’ai pas testé, je préfère ne pas dire de bêtises ici.

Là, c’est simple. Il vous faut un serveur Apache installé et fonctionnel sur votre serveur
mandataire. C’est tout. Un système de pare-feu ne serait également pas de trop (ce serveur est
l’unique point d’entrée d’Internet, rappelons le )
Il vous faut également (bien evidemment ?) une connexion ssh vers votre serveur, ou à défaut un
écran-clavier-souris.

3 of 10 10/3/23, 16:54
Configurer un reverse proxy Apache (HTTP/HTTPS) –... https://wiki.maxcorp.org/configurer-un-reverse-proxy-...

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 !

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 :

1 <VirtualHost *:80>
2
3 ServerName nomdedomaine.tld
4 ProxyPreserveHost On
5 ProxyRequests off
6 ProxyPass / http://IPSERVEURWEBINTERNE/
7 ProxyPassReverse / http://IPSERVEURWEBINTERNE/
8
9 </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

4 of 10 10/3/23, 16:54
Configurer un reverse proxy Apache (HTTP/HTTPS) –... https://wiki.maxcorp.org/configurer-un-reverse-proxy-...

pour chaque fichier que vous avez créé.


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

sudo /etc/init.d/apache2 reload

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 !

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

5 of 10 10/3/23, 16:54
Configurer un reverse proxy Apache (HTTP/HTTPS) –... https://wiki.maxcorp.org/configurer-un-reverse-proxy-...

(é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 :

6 of 10 10/3/23, 16:54
Configurer un reverse proxy Apache (HTTP/HTTPS) –... https://wiki.maxcorp.org/configurer-un-reverse-proxy-...

1 <VirtualHost *:443>
2 # Décommentez cette ligne et indiquez-y l'adresse courriel de
3 #ServerAdmin webmaster@my-domain.com
4
5 # Classique, votre nom de domaine
6 ServerName monsite.tld
7
8 # Si jamais vous avez d'autres domaines renvoyant sur ce site,
9 # Vous pouvez utiliser le joker * pour prendre en compte tout
10 #ServerAlias www2.my-domain.com www.my-other-domain.com *.yet-
11
12 # L'emplacement des logs.
13 ErrorLog /var/log/apache2/monsite.tld-error.log
14 LogLevel warn
15 CustomLog /var/log/apache2/monsite.tld-access.log combined
16
17 # SSL magic
18 #
19 # Il est nécessaire d'activer SSL, sinon c'est http qui sera u
20 SSLEngine On
21
22 # On autorise uniquement les clefs de cryptage longue (high) e
23 # SSLCipherSuite HIGH:MEDIUM
24
25 # On autorise SSLV3 et TLSv1, on rejette le vieux SSLv2
26 # SSLProtocol all -SSLv2
27
28 # La clef publique du serveur :
29 SSLCertificateFile /etc/apache2/ssl/moncertificat-cert.pem
30
31 # La clef privée du serveur:
32 # SSLCertificateKeyFile /etc/apache2/ssl/moncertificat-key.pem
33
34 # Theses lines only apply of the rewrite module is enabled.
35 # This is a security enhancement recommanded by the nessus too
36 <IfModule mod_rewrite.c>
37 RewriteEngine on

7 of 10 10/3/23, 16:54
Configurer un reverse proxy Apache (HTTP/HTTPS) –... https://wiki.maxcorp.org/configurer-un-reverse-proxy-...

38 RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)


39 RewriteRule .* - [F]
40 </IfModule>
41 <IfModule mod_rewrite.c>
42 <IfModule mod_proxy.c>
43
44 #Ne commentez jamais cette ligne, elle évite que votre serveur
45 ProxyRequests Off
46
47 # Cetet option passe les nom d'hôte au serveur, ce qui vous pe
48 ProxyPreserveHost On
49
50 # Les lignes classiques de proxy. Comme dit au dessus, on pass
51 ProxyPassReverse / http://IPSERVEURWEB/
52 RewriteRule ^/(.*) http://IPSERVERUWEB/$1 [P,L]
53
54 </IfModule>
55 </IfModule>
56
57 # Autoriser l'accès au contenu à travers le proxy.
58 #Ne l'enlevez pas si vous voulez que le site fonctionne !
59 <Location />
60 Order deny,allow
61 Allow from all
62 </Location>
63
64 </VirtualHost>
65
66 <VirtualHost *:80>
67 # Cette partie va permettre de rediriger d'éventuelles requête
68 # Vous pouvez également configurer le proxy à la place de la r
69 ServerName monsite.tld
70
71 #ServerAlias www2.my-domain.com www.my-other-domain.com *.yet-
72
73 # Theses lines only apply of the rewrite module is enabled.
74 # This is a security enhancement recommanded by the nessus too
75 <IfModule mod_rewrite.c>

8 of 10 10/3/23, 16:54
Configurer un reverse proxy Apache (HTTP/HTTPS) –... https://wiki.maxcorp.org/configurer-un-reverse-proxy-...

76 RewriteEngine on
77 RewriteCond %{REQUEST_METHOD} ^{TRACE|TRACK}
78 RewriteRule .* - [F]
79 </IfModule>
80
81 # On renvoit toutes les requêtes HTTP vers l'HTTPS.
82 Redirect permanent / https://monsite.tld/
83
84 </VirtualHost>

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

1 sudo a2ensite monproxyssl


2 sudo /etc/init.d/apache2 reload

Et voila, votre reverse proxy doit fonctionner en HTTPS

Configurer un reverse proxy avec haproxy (HTTP/HTTPS) (https://wiki.maxcorp.org


/configurer-un-reverse-proxy-avec-haproxy-http-https/)

Configurer Veeam 9 : Ajouter d’un backup repository (https://wiki.maxcorp.org/1199-2/)

Vous devez vous connecter (https://wiki.maxcorp.org/login/?redirect_to=https%3A%2F


%2Fwiki.maxcorp.org%2Fconfigurer-un-reverse-proxy-apache-http-https%2F) pour publier un
commentaire.

9 of 10 10/3/23, 16:54
Configurer un reverse proxy Apache (HTTP/HTTPS) –... https://wiki.maxcorp.org/configurer-un-reverse-proxy-...

A PROPOS

Me contacter (http://wiki.maxcorp.org/me-contacter/)
Tél : 02 55 59 60 02
44100, NANTES

• Windows (https://wiki.maxcorp.org/category/windows/)
• Linux (https://wiki.maxcorp.org/category/linux/)
• Serveurs (https://wiki.maxcorp.org/category/serveur/)
• Autres (https://wiki.maxcorp.org/category/autres/)

RECHERCHER DANS LE SITE

Rechercher…

MON WIKI 2018 MaxCorp Design by (https://smartcatdesign.net/)

10 of 10 10/3/23, 16:54

Vous aimerez peut-être aussi