Skip To Content

Configurer un serveur proxy inverse avec ArcGIS 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 machines derrière le pare-feu de votre organisation et protège ainsi les machines internes contre toute attaque 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.

Si votre serveur proxy inverse prend en charge une fonction de contrôle de l’intégrité, vous pouvez utiliser l’extrémité de contrôle de l’intégrité d’ArcGIS Server pour déterminer si le site peut recevoir des requêtes. Cela est utile pour déterminer rapidement si le site présente une défaillance logicielle ou matérielle. Pour plus d’informations, reportez-vous à la rubrique Contrôle de l’intégrité dans l’ArcGIS REST API.

Ajout d’ArcGIS Server à votre serveur proxy inverse

Vous pouvez configurer le serveur proxy inverse de votre organisation afin qu’il communique directement avec ArcGIS Server ou via ArcGIS Web Adaptor en ajoutant les URL suivantes aux directives du proxy.

Remarque :

Vous devez vous assurer que le nom contextuel du serveur proxy inverse ne descend que d’un niveau d’URL. Par exemple, vous pourriez spécifier l’URL d’un serveur proxy inverse https://proxy.domain.com/enterprise, mais pas la suivante : https://proxy.domain.com/myorg/enterprise.

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

Si la communication s’effectue via ArcGIS Web Adaptor

ProxyPass /server https://gisserver.domain.com/server
ProxyPassReverse /server https://gisserver.domain.com/server

Si la communication s’effectue directement avec ArcGIS Server

ProxyPass /arcgis https://gisserver.domain.com:6443/arcgis
ProxyPassReverse /arcgis https://gisserver.domain.com:6443/arcgis

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é ArcGIS ServerWebContextURL. Cela permet à ArcGIS Server de créer les URL correctes sur toutes les ressources transmises à l’utilisateur final.

Remarque :

Si vous avez configuré ArcGIS Web Adaptor avec votre site, utilisez la propriété WebContextURL pour définir l’URL d’ArcGIS Server de sorte qu’elle corresponde avec celle de son ArcGIS Web Adaptor (par exemple, /mygis). Si aucun adaptateur web n’est configuré, l’URL du site doit se terminer par /arcgis afin d’éviter les éventuels problèmes de redirection d’URL.

Procédez comme suit pour modifier WebContextURL :

  1. Connectez-vous au répertoire administrateur ArcGIS Server à l’adresse https://gisserver.domain.com:6443/arcgis/admin en tant qu’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 JSON suivant, en remplaçant votre propre URL ArcGIS Server telle que la voient les utilisateurs extérieurs au pare-feu de votre organisation.
    {
       "WebContextURL": "https://gisserver.domain.com/mygis"
    }
  4. Cliquez sur Mettre à jour.
  5. Redémarrez ArcGIS Server sur chaque serveur SIG du site. Sous Linux, exécutez les scripts stopserver et startserver figurant dans le dossier d’installation de chaque machine.

En-têtes du proxy inverse et ArcGIS Server

Avant de déployer votre serveur proxy inverse pour l’utiliser avec ArcGIS Server ou ArcGIS Web Adaptor, il vous est recommandé de configurer certains en-têtes du proxy inverse afin de garantir la communication.

Votre serveur proxy inverse doit être capable de détecter les redirections (codes HTTP 301 ou 302). Mettez à jour son en-tête Emplacement pour vous assurer que le nom de domaine complet (FQDN) et le contexte de la réponse correspondent à la valeur WebContextURL du serveur.

X-Forwarded-Host

Lorsque vous intégrez votre proxy inverse à ArcGIS Server ou à ArcGIS Web Adaptor, sachez que ces deux composants exigent que vous définissiez la propriété suivante 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 Server et ArcGIS Web Adaptor renvoient au serveur proxy inverse des requêtes qui correspondent à son URL. Par exemple, une requête destinée au répertoire de services ArcGIS 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 Server et ArcGIS Web Adaptor peuvent renvoyer l’URL de l’ordinateur interne vers lequel la demande a été dirigée (par exemple, https://gisserver.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 la machine interne.

Pour la résolution de problèmes de communication entre des clients et ArcGIS Server ou 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. Par exemple, Apache utilise la directive ProxyPreserveHost On intégrée à sa configuration :

...
ProxyPreserveHost On
ProxyPass /server https://gisserver.domain.com/server
ProxyPassReverse /server https://gisserver.domain.com/server
...

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