Skip to main 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 ou sous-réseau filtré) qui gère des demandes provenant d’Internet et les transmet aux machines de votre réseau interne. En transmettant des demandes, 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 le 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 d’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 de la plupart des serveurs proxy inverses est configurable. 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é ; une notification apparaît alors dans le notebook. Si cela se produit de manière régulière (par exemple, toutes les minutes ou toutes les trois ou cinq 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 d’ArcGIS Notebook Server. Cela permet à ArcGIS Notebook Server de créer les URL correctes sur les ressources transmises à l’utilisateur final.

Remarque :

Utilisez la propriété WebContextURL pour définir l’URL d’ArcGIS Notebook Server afin qu’elle corresponde à celle de son instance ArcGIS Web Adaptor (tel que /notebook).

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

  1. Connectez-vous au répertoire d’administration d’ArcGIS Notebook Server, à l’adresse https://notebookserver.domain.com:11443/arcgis/admin, en qualité d’utilisateur doté de privilèges d’administration.

  2. Cliquez sur system (système) > properties (propriétés) > update (mettre à jour).

  3. Dans la zone de texte Properties (Propriétés), insérez le code JSON suivant, 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 Update (Mettre à jour).

  5. Redémarrez ArcGIS Notebook Server. Sous Windows, redémarrez le service Windows ArcGIS Server.

  6. 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 requêtes qui correspondent à l’URL du serveur proxy inverse. Par exemple, une requête adressée à ArcGIS Notebook Server (https://reverseproxy.domain.com/arcgis/rest/services) sera 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 la machine interne vers laquelle la requête 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 back-end exécutent une instance 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 : configurer 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. Le processus indiqué ci-dessous en exemple décrit les étapes de la configuration d’un serveur proxy inverse à l’aide d’Apache HTTP Server et d’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 qu’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 figurant sur des machines différentes.

La procédure ci-dessous a lieu une fois qu’ArcGIS Notebook Server et Mirantis Container Runtime ont été installés et configurés, et qu’une instance d’ArcGIS Web Adaptor a été installée sur un serveur Web 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 de l’instance ArcGIS Web Adaptor (Java Platform) sur Tomcat.

    Pour cet exemple, l’URL d’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 HTTP Apache 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 d’ArcGIS Web Adaptor vers le port AJP de Tomcat.

    ProxyPass /nbs ajp://myserver.acme.com:8009/nbs
    ProxyPassReverse /nbs ajp://myserver.acme.com:8009/nbs
    
  7. Dans le fichier ssl.conf d’Apache HTTP Server, utilisez les règles de serveur proxy pour rediriger les appels SSL d’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.