Skip To Content

Configurare un server proxy inverso con ArcGIS Notebook Server

Un proxy server inverso è un computer distribuito in una rete perimetrale (anche detta zona demilitarizzata [DMZ] o subnet perimetrale) che gestisce le richieste di Internet e le inoltra ai computer nella rete interna. Inoltrando le richieste, il server proxy inverso maschera l'identità dei computer dietro il firewall dell'organizzazione, proteggendo i computer interni dagli attacchi diretti degli utenti di Internet. È possibile implementare altre funzioni di sicurezza nel server proxy inverso per proteggere ulteriormente la rete interna dagli utenti esterni.

È possibile configurare il sito di ArcGIS Notebook Server per utilizzare il server proxy inverso della propria organizzazione. Facoltativa. Se l'organizzazione non utilizza un proxy inverso o se l'utente non desidera configurare il sito di ArcGIS Notebook Server per utilizzarne uno, è possibile procedere alla configurazione del sito con un portale.

Aggiungere ArcGIS Notebook Server al server proxy inverso

Il server proxy inverso dell'organizzazione deve essere configurato per comunicare con ArcGIS Web Adaptor aggiungendo gli URL corrispondenti alle direttive proxy.

Ad esempio, se si utilizza Apache come server proxy inverso, è necessario aggiungere l'URL di ArcGIS Web Adaptor alle direttive ProxyPass nel file di configurazione httpd.conf del server Web Apache come segue:

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

La maggior parte dei server reverse proxy ha un timeout di connessione client configurabile. Le connessioni websocket utilizzate da ArcGIS Notebook Server per comunicare con il kernel Python saranno scollegate quando viene raggiunto il timeout della connessione, e una notifica apparirà nel notebook. Se questo accade ad un intervallo costante, per esempio ogni 1, 3 o 5 minuti dopo la riconnessione al kernel, i timeout di connessione al percorso di rete dovrebbero essere esaminati e aumentati di conseguenza.

Impostare la proprietà WebContextURL

Se stai usando un server reverse proxy e l'URL del tuo sito non finisce con la stringa predefinita /arcgis (tutto minuscolo), dovresti anche impostare la proprietà ArcGIS Notebook Server WebContextURL. In questo modo ArcGIS Notebook Server può costruire gli URL corretti per tutte le risorse che invia all'utente finale.

Nota:

Usate la proprietà WebContextURL per impostare l'URL ArcGIS Notebook Server in modo che corrisponda a quello del suo ArcGIS Web Adaptor (come /notebook).

Fate come segue per cambiare la proprietà WebContextURL:

  1. Accedere all'Administrator Directory di ArcGIS Notebook Server a https://notebookserver.domain.com:11443/arcgis/admin come utente con privilegi di amministratore.
  2. Fare clic su sistema > proprietà > aggiorna.
  3. Nella casella di testo Proprietà, inserire il seguente JSON, sostituendo l'URL di ArcGIS Notebook Server come visualizzato dagli utenti al di fuori del firewall dell'organizzazione:
    {
       "WebContextURL": "https://notebookserver.domain.com/notebook"
    }
  4. Fare clic su Aggiorna.
  5. Riavviare ArcGIS Notebook Server. Su Windows, riavviare il servizio di Windows ArcGIS Server.

Intestazioni del proxy inverso e ArcGIS Notebook Server

Quando si integra il proxy inverso con ArcGIS Web Adaptor, la seguente proprietà deve essere impostata nell'intestazione inviata dal server proxy inverso:

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

Se questa proprietà è impostata nell'intestazione, ArcGIS Web Adaptor restituirà al server proxy inverso le richieste che corrispondono all'URL del server proxy inverso. Per esempio, una richiesta alla directory dei servizi ArcGIS Notebook Server (https://reverseproxy.domain.com/arcgis/rest/services) sarà restituita al client come lo stesso URL.

If the X-Forwarded-Host header property is not set, ArcGIS Web Adaptor may return the URL of the internal machine where the request was directed, for example, https://notebookserver.domain.com/arcgis/rest/services instead of https://reverseproxy.domain.com/arcgis/rest/services. Questo può diventare un problema poiché i client non potranno accedere a tale URL (anomalia comunemente nota come errore 404 del browser) Il client avrà inoltre accesso ad alcune informazioni sul computer interno.

Durante la risoluzione dei problemi di comunicazione tra i client e ArcGIS Web Adaptor, si raccomanda di impostare la proprietà dell'intestazione di X-Forwarded-Host nel server proxy inverso, in quanto questa è una causa comune di errori di comunicazione. Il modo in cui si imposta questa intestazione varia a seconda dell'implementazione del server proxy inverso.

Per indicazioni su come superare l'intestazione originale dell'host, consultare la documentazione del prodotto per il server proxy inverso.

Configurazione del server reverse proxy per un sito ArcGIS Notebook Server altamente disponibile

Quando si implementa un server reverse proxy che ha più obiettivi backend in esecuzione di ArcGIS Web Adaptor registrati con un singolo sito ArcGIS Notebook Server, ci sono ulteriori considerazioni che devono essere prese in considerazione.

ArcGIS Notebook Server utilizza connessioni websocket per comunicare con il kernel Python. Queste connessioni websocket creano una sessione statica che deve essere mantenuta dalla configurazione del reverse proxy. Questo si chiama "session stickiness" (adesività della sessione) e richiede un bilanciatore di carico del livello 7 (applicazione) per ottenerlo.

La corretta adesività della sessione può essere ottenuta in Apache con quanto segue:

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>

È anche importante fare il proxy delle connessioni websocket sicure (WSS) agli stessi obiettivi di backend:

<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>