Réseaux

Nginx Proxy Manager : Administrer facilement votre Reverse Proxy

Par Tutos-Info , le 20 janvier 2023 , mis à jour le 20 janvier 2023 - 7 minutes de lecture
nginx proxy manager
5/5 - (3 votes)

Si vous voulez sécuriser les accès à vos serveurs web vous pouvez utiliser des Reverse Proxy. Le plus connu c'est NGINX , il est gratuit, rapide et très simple à prendre en main.

Mais il faut souvent modifier les fichiers de configuration et c'est parfois galère. Nginx Proxy Manager permet de tout configurer depuis une interface graphique accessible depuis un navigateur.

Cet article vous explique comment installer et configurer Nginx Proxy Manager.

À quoi ça sert un Reverse Proxy ?

Vous connaissez sûrement le Proxy , il s'agit d'un serveur qui transfère vos requêtes afin d'obtenir les pages des sites internet que vous souhaitez consulter. Le proxy permet de mettre en plage du filtrage d'URL, de réduire la consommation de bande passante  grâce au système de cache. Ainsi la page est stockée sur le serveur proxy.

Le Reverse Proxy (proxy inversé) quant à lui a un rôle différent. Il permet de protéger les accès à des serveurs web ou des serveurs d'applications. Pour accéder à vos ressources depuis internet (l'extérieur) c'est le Reverse Proxy qui reçoit les requêtes et qui distribuera la requête au bon serveur.

Les avantages du Reverse Proxy

Le Reverse Proxy peut également filtré les requêtes en fonction de la géolocalisation , les paramètres de l'URI. L'outil CloudFlare peut aussi servir de Reverse Proxy , c'est d'ailleurs le cas si vous activez les flux "proxified".

Un autre avantage du Reverse Proxy c'est de ne pas exposer directement vos serveurs web. En effet si vous voulez accéder à votre serveur depuis internet il faut mettre en place un NAT sur votre pare-feu ou routeur. Le NAT permet de rediriger les flux externes vers la ressource interne. C'est donc le reverse proxy qui sera exposé à internet.

A découvrir  Portainer : Gérer vos conteneurs Docker depuis une interface web

Concernant les certificats SSL le proxy NGINX est capable de porter le certificat pour chiffrer la connexion de bout en bout.

Pour résumer, voici les points forts d'un Reverse Proxy :

  • Sécurité : un reverse proxy peut être configuré pour fournir une sécurité supplémentaire, comme la vérification de l'authentification des utilisateurs ou la détection des attaques de déni de service.
  • Cache : un reverse proxy peut mettre en cache les réponses des serveurs de destination, ce qui peut réduire considérablement la charge sur ces derniers et améliorer les temps de réponse pour les utilisateurs.
  • Équilibrage de charge : un reverse proxy peut répartir les demandes entrantes entre plusieurs serveurs de destination, ce qui peut améliorer la scalabilité et la disponibilité de votre application.
  • Masquage d'IP : un reverse proxy peut masquer les adresses IP des serveurs de destination, ce qui peut améliorer la sécurité en empêchant les utilisateurs malveillants de cibler des serveurs spécifiques.
  • Gestion des connexions : un reverse proxy peut gérer les connexions entrantes et sortantes, ce qui peut permettre de limiter le nombre de connexions simultanées et éviter les dépassements de capacité.

Le problème c'est que votre serveur est directement accessible, les robots peuvent donc le trouver facilement et envoyer des requêtes malveillantes !

schéma reverse proxy
Explication du Reverse Proxy.

Installation de Nginx Proxy Manager

Création du conteneur Docker Nginx Proxy Manager

Nginx est très connu pour être performant et rapide. Il est gratuit et permet d'installer votre propre reverse proxy. Pour faciliter l'installation, je vais utiliser une image Docker. SI vous ne l'avez pas encore fait vous trouverez mes tutoriels pour installer Docker sur Linux et installer Docker sur Windows.

Pour faciliter l'installation, nous allons utiliser la fonctionnalité Docker Compose. C'est beaucoup plus facile avec Docker installé sur Linux.

Le saviez-vous ?
Nginx Proxy Manager (NPM) peut être installé sur un RASPBERRY PI)

Il suffit de copier-coller le code suivant dans un fichier nommé docker-compose.yml

A découvrir  Comment mesurer sa vitesse et le débit de sa connexion internet ?

Tout d'abord il faut créer le fichier avec la commande

 touch docker-compose.yml

puis

 nano docker-compose.yml

Et on colle le code suivant  :

version: '3'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'
      - '81:81'
      - '443:443'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

Le docker compose permet de créer un conteneur avec l'image jc21/nginx-proxy-manager , le conteneur sera automatiquement redémarré si le serveur redémarre.

3 ports sont indispensables :

80 , 81 (pour l'administration) et le 443

Pour les volumes, nous faisons un map du dossier data et letsencrypt.

Vous pouvez démarrer la création du conteneur en utilisant la commande suivante :

docker-compose up -d

Bravo le proxy NGINX MANAGER est installé.

Ouverture des ports (NAT pour de l'hébergement local)

Il faut maintenant faire une ouverture du port 80 et du port 443 vers votre Proxy Manager si vous hébergez localement votre Reverse Proxy.

L'IP publique de votre routeur redirigera les flux http et https vers votre conteneur Docker qui héberge le proxy.

Voici un exemple sur une Livebox du fournisseur Orange, le port 80 et 443 sont redirigés vers le port 80 et 443 du conteneur Docker.

ouverture port livebox sosh

Utilisation du proxy NGINX Manager

Changer le login et mot de passe

Vous pouvez accéder à votre Nginx Proxy manager en saisissant dans la barre d'adresse l'IP de votre serveur:81 (http://ip-serveur:81).

nginx proxy manager connexion
L'interface de connexion.

Il existe un login et un mot de passe par défaut qui sont :

Email: [email protected]

Password: changeme

À la première connexion, vous devez modifier votre adresse ET votre mot de passe.

Ajouter un Proxy Host

Vous pouvez déclarer un Host, c'est un serveur qui pourra être accessible depuis internet. Pour déclarer un Host il faut absolument un nom de domaine ou un sous-domaine. En effet le Reverse proxy redirigera les requêtes en fonction du nom de domaine qui est interrogé.

  • Par exemple : http://web.tutos-informatique.com sera redirigé vers un serveur web hébergé en local (par exemple 192.168.1.35)
  • Un autre exemple : https://nas.tutos-informatique.com sera redirigé vers un NAS QNAP hébergé localement ( avec une IP en 192.168.1.36)
A découvrir  Comment installer Docker sur Windows 10 et Windows 11 ?

Le Reverse Proxy travaille avec des noms de domaine ce qui permet d'économiser des adresses IP Publiques mais aussi de simplifier l'accès aux ressources.

Il faudra penser à faire pointer vos domaines ou sous-domaines sur l'adresse IP publique de votre routeur, derrière l'IP publique se cache votre Reverse Proxy.

Pour ajouter un Proxy host il faut cliquer sur le bouton Add Proxy Host

nginx add proxy host

Puis on renseigne le nom du domaine , la ressource interne et le port.

creation d'un proxy host

Dans l'onglet SSL il est possible de créer un certificat SSL avec Let's Encrypt afin de sécuriser la communication. Le proxy portera le certificat, il n'est pas nécessaire de créer un certificat sur le serveur local.

génération certificat ssl let's encrypt

Puis vous pouvez définir des paramètres comme forcer le SSL, activer le HSTS , HTTP/2

ssl nginx

Une fois validé, votre ressource est correctement configurée dans le Reverse Proxy !

Déclarer une redirection

Déclarer une redirection permet de rediriger un domaine, par exemple une redirection 301 d'un site en http vers https. Ou encore un site sans les 3w avec les 3w.

redirection proxy manager

Déclarer des Stream (l'équilibrage de charge)

Une fonctionnalité très appréciée des Reverse Proxy , c'est la possibilité de mettre en place un équilibrage de charge entre plusieurs serveurs (Load Balancing).

Je vous invite à lire la documentation pour la mise en place des Stream.

stream nginx

Pour aller plus loin

Nginx Proxy Manager permet de configurer très facilement un reverse proxy. Il est aussi possible de mettre en place des politiques de sécurité (ACL) et d'installer un système de géolocalisation des IP.

Je vous invite fortement à lire la documentation pour améliorer votre reverse proxy. Il est possible que vous puissiez faire des configurations plus complexes directement dans NGINX lui-même.

Me concernant, je l'utilise pour protéger un serveur Bitwarden Auto Hébergé.

 

 

Tutos-Info

Fondateur de Tutos-Informatique, je suis Administrateur Systèmes et Réseaux. Je propose des tutoriels suite à mes interventions clients.

Commentaires

Laisser un commentaire

Votre commentaire sera révisé par les administrateurs si besoin.