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.
Le proxy inverse EOLE peut relayer des requêtes vers les services suivants :
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.
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.