Skip To Content

Configurer un serveur proxy inverse avec ArcGIS Notebook Server

Un serveur proxy inverse est un ordinateur déployé sur un réseau de périmètre (appelé également zone démilitarisée [DMZ] ou sous-réseau filtré) qui gère des requêtes provenant d’Internet et les transmet aux machines de votre réseau interne. En transmettant des requêtes, le serveur proxy inverse masque l’identité des ordinateurs derrière le pare-feu de votre organisation, ce qui protège les ordinateurs internes de toute attaque directe provenant des utilisateurs d’Internet. Vous pouvez intégrer des fonctions de sécurité supplémentaires au serveur proxy inverse pour protéger davantage votre réseau interne contre toute attaque provenant de l'extérieur.

Vous pouvez configurer votre site ArcGIS Notebook Server pour utiliser un serveur proxy inverse de votre organisation. Ce paramètre est facultatif. Si votre organisation n’utilise pas de serveur proxy inverse ou si vous ne souhaitez pas configurer votre site ArcGIS Notebook Server pour en utiliser un, vous pouvez passer à la configuration de votre site avec un portail.

Ajouter ArcGIS Notebook Server à votre serveur proxy inverse

Vous devez configurer le serveur proxy inverse de votre organisation afin qu’il communique avec ArcGIS Web Adaptor en ajoutant les URL correspondantes aux directives du serveur proxy.

Par exemple, si vous utilisez Apache comme serveur proxy inverse, vous devez ajouter l’URL de ArcGIS Web Adaptor aux directives ProxyPass du fichier de configuration du serveur Web Apache httpd.conf, comme suit :

ProxyPass /notebook https://notebookserver.domain.com/notebook
ProxyPassReverse /notebook https://notebookserver.domain.com/notebook

Le délai de connexion client des serveurs proxy inverses est configurable pour la plupart. Les connexions WebSocket utilisées par ArcGIS Notebook Server pour communiquer avec le noyau Python sont interrompues dès que le délai de connexion est écoulé, et une notification s’affiche dans le notebook. En cas de récurrence régulière (par exemple, toutes les minutes ou toutes les 3 ou 5 minutes après la reconnexion au noyau), les délais de connexion au chemin réseau doivent être examinés et augmentés en conséquence.

Définir la propriété WebContextURL

Si vous utilisez un serveur proxy inverse,et que l’URL vers votre site ne se termine pas par la chaîne par défaut /arcgis (tout en minuscules), vous devez également définir la propriété WebContextURL de ArcGIS Notebook Server. Cela permet à ArcGIS Notebook Server de créer les URL correctes sur les ressources transmises à l’utilisateur final.

Remarque :

La propriété WebContextURL permet de définir l’URL de ArcGIS Notebook Server afin qu’elle corresponde à celle de son ArcGIS Web Adaptor (comme /notebook).

Pour modifier la propriété WebContextURL, procédez comme suit :

  1. Connectez-vous au répertoire administrateur ArcGIS Notebook Server, à l’adresse https://notebookserver.domain.com:11443/arcgis/admin, en qualité d’utilisateur doté de privilèges d’administrateur.
  2. Cliquez sur système > propriétés > mettre à jour.
  3. Dans la zone de texte Properties (Propriétés), insérez le code JSON ci-dessous, en y substituant votre propre URL ArcGIS Notebook Server telle que la voient les utilisateurs extérieurs au pare-feu de votre organisation :
    {
       "WebContextURL": "https://notebookserver.domain.com/notebook"
    }
  4. Cliquez sur Mettre à jour.
  5. Redémarrez ArcGIS Notebook Server. Sous Windows, redémarrez le service Windows ArcGIS Server.

En-têtes du proxy inverse et ArcGIS Notebook Server

Lors de l’intégration de votre serveur proxy inverse avec ArcGIS Web Adaptor, la propriété ci-dessous doit être définie dans l’en-tête envoyé par le serveur proxy inverse :

X-Forwarded-Host=<FQDN of reverse proxy server>

Si cette propriété est définie dans l’en-tête, ArcGIS Web Adaptor renvoie au serveur proxy inverse des demandent qui correspondent à l’URL du serveur proxy inverse. Par exemple, une requête destinée au répertoire de services ArcGIS Notebook Server (https://reverseproxy.domain.com/arcgis/rest/services) est renvoyée au client sous la forme de l’URL correspondante.

Si la propriété de l’en-tête X-Forwarded-Host n’est pas définie, ArcGIS Web Adaptor peut renvoyer l’URL de l’ordinateur interne vers lequel la demande a été dirigée (par exemple, https://notebookserver.domain.com/arcgis/rest/services au lieu de https://reverseproxy.domain.com/arcgis/rest/services). Cela pose un problème, car les clients ne pourront pas accéder à cette URL (erreur 404 du navigateur). Le client disposera également d’informations sur l’ordinateur interne.

Pour la résolution de problèmes de communication entre des clients et ArcGIS Web Adaptor, il est recommandé de définir la propriété de l’en-tête X-Forwarded-Host du serveur proxy inverse, car il s’agit d’une cause fréquente d’échec de communication. La configuration de cet en-tête dépend de la mise en œuvre de votre serveur proxy inverse.

Pour savoir comment transmettre l’en-tête de l’hôte d’origine, consultez la documentation de votre serveur proxy inverse.

Configuration de votre serveur proxy inverse pour un site ArcGIS Notebook Server haute disponibilité

Pour la mise en œuvre d’un serveur proxy inverse dont plusieurs cibles dorsales exécutent une instance de ArcGIS Web Adaptor inscrite auprès d’un seul site ArcGIS Notebook Server, il y a plusieurs autres facteurs à prendre en compte.

ArcGIS Notebook Server utilise des connexions WebSocket pour communiquer avec le noyau Python. Ces connexions WebSocket créent une session avec état qui doit être gérée par la configuration du proxy inverse. C’est ce que l’on appelle l’adhérence de session, et un équilibreur de charge en couche 7 (application) est nécessaire pour l’obtenir.

Il est possible d’atteindre l’adhérence de session dans Apache avec ce qui suit :

Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED

<Proxy balancer://web_adaptors_https>
    BalancerMember https://notebook1.domain.com:443 route=notebook1
    BalancerMember https://notebook2.domain.com:443 route=notebook2
    BalancerMember https://notebook3.domain.com:443 route=notebook3

    ProxySet lbmethod=byrequests
    ProxySet stickysession=ROUTEID
</Proxy>

Il est également important de rediriger par proxy les connexions WebSocket Secure (WSS) aux mêmes cibles dorsales :

<Proxy balancer://web_adaptors_wss>
    BalancerMember wss://notebook1.domain.com:443 route=notebook1
    BalancerMember wss://notebook2.domain.com:443 route=notebook2
    BalancerMember wss://notebook3.domain.com:443 route=notebook3

    ProxySet lbmethod=byrequests
    ProxySet stickysession=ROUTEID
</Proxy>