Ceci est une ancienne révision du document !


Configurer Nginx comme reverse proxy web

Introduction

L'intérêt de cette page est de comprendre comment mettre en place un reverse proxy web avec Nginx. Cette machine aura pour but de relayer les paquets à destination de serveurs web accessibles uniquement en local, ce qui constitue un premier rempart de sécurité pour ceux-ci, et permet d'accélérer l'accès aux pages web grâce à la mise en cache. Pour cela, on va utiliser le principe de “virtual hosts”.

Un virtual host est un fichier de configuration spécifique à un domaine ou sous-domaine web, qui permet de contrôler finement les paramètres accès à ses sites web, et de faire cohabiter plusieurs sites web utilisant le même port de connexion sur une seule machine.

Ce tutoriel est fait pour nginx mais le serveur web apache fonctionne de la même manière, malgré que la syntaxe de la configuration soit différente.

Topologie du LAB

Pré-requis

Pour ce LAB il faudra :

  • Un serveur sous Linux qui aura le rôle de reverse proxy, si possible avec 2 cartes réseau.
  • Un autre serveur web fonctionnel sous n'importe quel OS, et connecté au même réseau LAN que le premier.

Procédure

Créer un virtualhost pour le site1 :

nano /etc/nginx/sites-available/site1.conf

Y rédiger la configuration suivante :

server {
    server_name site1.domaine;  #sous-domaine, domaine ou IP de connexion au site utilisé par
    location ^~ / {
    #Remplacer l'adresse de l'hôte source par celle du proxy dans les requêtes HTTP à destination du serveur final
        proxy_set_header Host $host; 
    #Indique au serveur final quelle est l'IP de l'hôte source
        proxy_set_header X-Real-IP $remote_addr; ""
    #Indique vers quel serveur final le proxy doit transférer les requêtes (ici IP:port)
        proxy_pass http://192.168.1.1:8080;
    #Indique  au serveur final quel protocole est utilisé entre l'hôte source et le proxy (pour les logs)
        proxy_set_header X-Forwarded-Proto $scheme;
    }
   
 
 
 Activer le virtual host en créant un lien symbolique de ce fichier dans ''/etc/nginx/sites-enabled'' :
 
 <code>ln -s /etc/nginx/sites-available/site1.conf /etc/nginx/sites-enabled/site1.conf</code>
 
 Relancer le service nginx pour appliquer les changements :
 
 <code>systemctl restart nginx</code>
 
 Il est possible de tester la validité de la configuration nginx en cas de doute :
 
 <code>nginx -t</code>
 
 {{ ::nginx_test.png?800 |}}
  
 

Sources