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 Linux, exécutez les scripts stopnotebookserver.sh et startnotebookserver.sh situés dans le dossier d’installation.

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>

Exemple : Configurez Apache et Tomcat avec ArcGIS Notebook Server

Vous pouvez configurer un serveur proxy inverse avec ArcGIS Notebook Server à l’aide d’un logiciel de serveur web. L’exemple de processus ci-dessous décrit les étapes de la configuration d’un serveur proxy inverse à l’aide de Apache HTTP Server et de Apache Tomcat. C’est un simple exemple de configuration de serveur proxy inverse et non des instructions définitives.

Cet exemple de processus utilise le logiciel et les versions ci-dessous, tous installés sur le même ordinateur que ArcGIS Notebook Server :

  • Red Hat Enterprise Linux Server 7.5
  • Apache HTTP Server , httpd 2.4.6
  • Apache Tomcat 9.0.20/OpenJDK 1.8.0

Ces composants logiciels peuvent également se trouver dans une architecture distribuée, avec ArcGIS Notebook Server, Apache HTTP Server et Apache Tomcat, tous sur des ordinateurs distincts.

La procédure ci-dessous commence une fois que ArcGIS Notebook Server et Mirantis Container Runtime ont été installés et configurés, et une instance de ArcGIS Web Adaptor a été installée sur un serveur Java, mais n’a pas été configurée.

  1. Installez Tomcat de manière à l’exécuter sur le port 8080 à l’aide d’Apache JServ Protocol (AJP), qui est activé par défaut.
  2. Comme le port 8443 n’est pas activé par défaut sous Tomcat, activez le protocole SSL et ajoutez un connecteur pour le port 8443.

    Cela implique de générer un certificat SSL et de modifier le fichier de configuration Tomcat pour ajouter le connecteur. Pour des raisons de sécurité, seul le protocole TLS version 1.2 doit être utilisé.

    ...
    sslProtocol="TLS" SSLProtocol="TLSv1.2"
    ...

  3. Déployez le fichier arcgis.war pour l’instance ArcGIS Web Adaptor (Java Platform) existante sur Tomcat.

    Dans cet exemple, l’URL de ArcGIS Web Adaptor est /nbs.

  4. Installez Apache HTTP Server .

    Dans cet exemple, le gestionnaire de paquetage yum est utilisé. Les fonctions SSL sont installées à l’aide de yum.

    yum install httpd -y
    yum install mod_ssl -y

  5. Configurez un certificat SSL pour l’instance Apache HTTP Server dans son fichier ssl.conf.
  6. Modifiez le fichier Apache httpd.conf à l’aide des règles de serveur proxy (comme indiqué à la section précédente) pour rediriger les appels de ArcGIS Web Adaptor vers le serveur proxy du port AJP de Tomcat.

    ProxyPass /nbs ajp://myserver.acme.com:8009/nbs
    ProxyPassReverse /nbs ajp://myserver.acme.com:8009/nbs

  7. Dans le fichier Apache HTTP Server ssl.conf, utilisez les règles de serveur proxy pour rediriger les appels SSL de ArcGIS Web Adaptor vers le port AJP de Tomcat. Il est important de rediriger également les demandes WebSocket, utilisées par ArcGIS Notebook Server. Si les demandes WebSocket ne sont pas gérées correctement, ArcGIS Notebooks ne s’ouvre pas correctement.

    SSLProxyEngine On
    # Use RewriteEngine to handle WebSocket connection upgrades
    RewriteEngine On
    RewriteCond %{HTTP:Connection} Upgrade [NC]
    RewriteCond %{HTTP:Upgrade} websocket [NC]
    RewriteRule /(.*) wss://myserver.acme.com:8443/$1 [P,L]
    <Location "/nbs">
        ProxyPreserveHost On
        ProxyPass ajp://myserver.acme.com:8009/nbs
        ProxyPassReverse ajp://myserver.acme.com:8009/nbs
    </Location>

  8. Redémarrez le service Apache HTTP Server pour que les modifications apportées à la configuration soient appliquées.
  9. Configurez ArcGIS Web Adaptor avec ArcGIS Notebook Server.