Onglet Reverse proxy : Configuration du proxy inverse

EOLE propose un serveur proxy inverse (reverse proxy) basé sur le logiciel libre Nginx[1].

Le proxy inverse est un type de serveur proxy, habituellement placé en frontal de serveurs web, qui permet de relayer des requêtes web provenant de l'extérieur vers les serveurs internes (situés en DMZ[2] par exemple). Cela le différencie grandement d'un proxy classique comme Squid[3].

Concrètement, le proxy inverse permet d'ouvrir des services web installés sur des serveurs situées "derrière" le pare-feu l'accès sur Internet sans avoir recours à des règles iptables[4]/DNAT.

Diagramme d'un proxy inverse - Licence CC0
Diagramme d'un proxy inverse - Licence CC0

Le proxy inverse EOLE peut relayer des requêtes vers les services suivants : 

  • serveur EoleSSO ;

  • outil d'administration EAD[5] ;

Avant toute chose, le proxy inverse doit être activé dans l'onglet Services en passant Activer le reverse proxy Nginx à oui.

L'activation du service fait apparaître un nouvel onglet.

Vue de l'onglet Reverse proxy de l'interface de configuration du module
Vue de l'onglet Reverse proxy de l'interface de configuration du module

Redirection de services particuliers

Pour rediriger le service EoleSSO (port 8443) il faut indiquer l'adresse IP ou le nom de domaine interne de la machine de destination (adresse IP ou le nom de domaine interne du module Scribe). Si le service EoleSSO est activé localement il est impossible de réaliser une redirection pour ce service.

Attention

Le service SSO local du module Amon ne devra pas être activé si vous renseignez l'adresse d'un service SSO distant au niveau du proxy inverse.

Redirection HTTP et HTTPS

Pour rediriger HTTP et HTTPS il est nécessaire de passer la variable Activer le reverse proxy Nginx pour le http/https à oui et de renseigner plus d'informations :

  • le Nom de domaine ou IP à rediriger : le nom de domaine diffusé auprès des utilisateurs. Ce nom de domaine est celui qui permet d'accéder au module Amon ou AmonEcole ;

  • le Répertoire ou nom de la page à rediriger permet de rediriger un sous-répertoire vers une machine. La valeur par défaut est / ;

  • l'IP ou domaine de destination (avec http:// ou https://) ou URI complète permet de saisir l'adresse IP (exemple : http://192.168.10.1), le nom de domaine (exemple : http://scribe.monetab.fr) ou l'URI[7] (exemple : http://scribe.monetab.fr/webmail/) du serveur de destination hébergeant la ou les applications.

Il est possible de forcer l'utilisation du protocole HTTPS pour les requêtes utilisant le protocole HTTP de façon transparente. De cette manière, un utilisateur web se connectant à l'adresse http://monetab.fr sera automatiquement redirigé vers https://monetab.fr

Ainsi les communications sont automatiquement chiffrées protégeant la transmission de données sensibles (nom d'utilisateur, mot de passe, etc.).

Le proxy inverse peut être utilisé pour ne rediriger que le HTTPS en passant les valeurs Reverse proxy HTTP à non et Reverse proxy HTTPS à oui.

Il est possible d'ajouter plusieurs redirections en cliquant sur le bouton Nom de domaine ou IP à rediriger.

Truc & astuce

Un répertoire déterminé peut également être redirigé vers un serveur différent. Par exemple le lien vers l'application Pronote[8], https://monetab.fr/pronote/ peut être redirigé vers http://pronote.monetab.fr/ (attention, le "/" final est important, puisqu'il faut rediriger à la racine du serveur de destination).

En mode expert il est possible :

  • d'Activer la réécriture d'URL ;

  • d'augmenter ou de diminuer la Longueur maximum pour un nom de domaine ;

  • de choisir la Taille maximale des données reçues par la méthode POST (en Mo).

L'activation de la réécriture d'URL permet d'ajouter une expression rationnelle et une valeur de remplacement.

Il n'y a pas de lien automatique entre une "redirection" Nginx renseignée et une réécriture d'URL.

Pour que la réécriture d'URL s'applique à une règle il faut que le nom de domaine, le protocole et le répertoire de la réécriture correspondent aux paramètres saisis dans la règle de "redirection" renseignée.

Sur une installation recevant de très nombreuses connexions, diminuer la valeur de la Longueur maximum pour un nom de domaine (server_names_hash_bucket_size) pourra améliorer les performances du proxy inverse. La valeur optimale varie d'une installation à l'autre.

Avec une valeur trop basse, le service Nginx refusera de démarrer et affichera un message d'erreur ressemblant à :

could not build the server_names_hash, you should increase server_names_hash_bucket_size: 32

Nginx Optimization : http://nginx.org/en/docs/http/server_names.html#optimization

L'option du mode expert Taille maximale des données reçues par la méthode POST (en Mo) permet de spécifier la taille des données HTTP au delà de laquelle Nginx renverra une erreur (message : Request Entity Too Large).

Attention

Dans le cas où, sur un module, le service eole-web est installé en plus du service eole-reverseproxy (ce qui est le cas sur le module AmonEcole et ses dérivés), le paramétrage de cette option est déplacée dans l'onglet Apache. Sa valeur est alors utilisée à la fois pour le serveur web Apache et pour le proxy inverse Nginx.