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 Linux, eseguire gli script stopnotebookserver.sh e startnotebookserver.sh che si trovano nella cartella di installazione.

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>

Esempio: configurare Apache e Tomcat con ArcGIS Notebook Server

È possibile configurare un proxy inverso con ArcGIS Notebook Server utilizzando qualsiasi software server Web. Il seguente flusso di lavoro di esempio descrive la procedura per impostare un proxy inverso utilizzando Apache HTTP Server e Apache Tomcat. Questo è un esempio di configurazione del proxy inverso, non istruzioni definitive.

Questo flusso di lavoro di esempio utilizza i seguenti software e versioni, tutti installati sullo stesso computer come 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

Questi componenti software possono anche trovarsi in un'architettura distribuita, con ArcGIS Notebook Server, Apache HTTP Server e Apache Tomcat, tutti su computer separati.

La seguente procedura ha inizio dopo che ArcGIS Notebook Server e Mirantis Container Runtime sono stati installati e configurati, e un'istanza di ArcGIS Web Adaptor è stata installata su un server Web Java ma non è stata configurata.

  1. Installare Tomcat per eseguirlo sulla porta 8080 utilizzando il protocollo Apache JServ Protocol (AJP), che è abilitato per impostazione predefinita.
  2. Poiché la porta 8443 non è abilitata per impostazione predefinita su Tomcat, abilitare SSL e aggiungere un connettore per la porta 8443.

    Ciò comporta la generazione di un certificato SSL e la modifica del file di configurazione Tomcat per aggiungere il connettore. Come buona pratica di sicurezza, solo la versione 1.2 di TLS deve essere abilitata.

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

  3. Implementare il file arcgis.war per l' esistente ArcGIS Web Adaptor (Java Platform) su Tomcat.

    Per questo esempio, l'URL di ArcGIS Web Adaptor è /nbs.

  4. Installare Apache HTTP Server .

    Per questo esempio, viene utilizzato il gestore di pacchetti yum. Le funzionalità SSL sono installate anche utilizzando yum.

    yum install httpd -y
    yum install mod_ssl -y

  5. Configurare un certificato SSL per Apache HTTP Server nel suo file ssl.conf.
  6. Modificare il file httpd.conf Apache utilizzando le regole proxy (come discusso nella sezione precedente) per le chiamate proxy di ArcGIS Web Adaptor alla porta AJP di Tomcat.

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

  7. Nel file Apache HTTP Server di ssl.conf, utilizzare le regole proxy alle chiamate SSL proxy ArcGIS Web Adaptor alla porta AJP di Tomcat. Inoltre, è importante utilizzare un proxy per le richieste di WebSocket, che vengono utilizzate da ArcGIS Notebook Server; se le richieste di WebSocket non vengono gestite correttamente, ArcGIS Notebooks non si aprirà correttamente.

    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. Riavviare il servizio Apache HTTP Server affinché le modifiche di configurazione abbiano effetto.
  9. Configurare ArcGIS Web Adaptor con ArcGIS Notebook Server.