Ein Reverseproxyserver ist ein Computer, der in einem Umkreisnetzwerk (auch demilitarisierte Zone [DMZ] oder überprüftes Subnetz genannt) bereitgestellt wird, das Anforderungen aus dem Internet bearbeitet und diese an die Computer im internen Netzwerk weiterleitet. Bei der Weiterleitung von Anforderungen maskiert der Reverseproxyserver die Computer hinter der Firewall der Organisation und schützt interne Computer vor direkten Angriffen durch Internetbenutzer. Um das interne Netzwerk vor externen Benutzern zu schützen, können zusätzliche Sicherheitsfunktionen in den Reverseproxyserver implementiert werden.
Sie können Ihre ArcGIS Notebook Server-Site so konfigurieren, dass der Reverseproxyserver Ihrer Organisation verwendet wird. Diese Angabe ist optional. Wenn Ihre Organisation keinen Reverseproxy verwendet oder Sie Ihre ArcGIS Notebook Server-Site nicht dafür konfigurieren möchten, dann können Sie mit dem Konfigurieren Ihrer Site mit einem Portal fortfahren.
Hinzufügen von ArcGIS Notebook Server zu einem Reverseproxyserver
Der Reverseproxyserver Ihrer Organisation muss für die Kommunikation mit ArcGIS Web Adaptor konfiguriert werden, indem den Proxy-Direktiven die entsprechenden URLs hinzugefügt werden.
Wenn Sie beispielsweise Apache als Reverseproxyserver verwenden, müssen Sie die ArcGIS Web Adaptor-URL zu den ProxyPass-Direktiven in der Apache-Webserver-Konfigurationsdatei httpd.conf hinzufügen:
ProxyPass /notebook https://notebookserver.domain.com/notebook
ProxyPassReverse /notebook https://notebookserver.domain.com/notebook
Die meisten Reverseproxyserver weisen ein konfigurierbares Zeitlimit für Clientverbindungen auf. Die von ArcGIS Notebook Server für die Kommunikation mit dem Python-Kernel verwendeten WebSocket-Verbindungen werden getrennt, wenn das Verbindungszeitlimit erreicht wird. Im Notebook wird dann eine Benachrichtigung angezeigt. Geschieht dies in einem regelmäßigen Intervall, beispielsweise alle 1, 3 oder 5 Minuten nach einer erneuten Verbindung mit dem Kernel, sollten die Verbindungszeitlimits für den Netzwerkpfad untersucht und entsprechend erhöht werden.
Festlegen der Eigenschaft WebContextURL
Wenn Sie einen Reverseproxyserver verwenden und die URL zu Ihrer Site nicht mit der Standardzeichenfolge /arcgis (alle in Kleinbuchstaben) endet, sollten Sie auch die WebContextURL-Eigenschaft von ArcGIS Notebook Server festlegen. Damit kann ArcGIS Notebook Server die richtigen URLs für die Ressourcen erstellen, die an den Endbenutzer gesendet werden.
Hinweis:
Verwenden Sie die Eigenschaft WebContextURL, um die ArcGIS Notebook Server-URL so festzulegen, dass sie der URL der zugehörigen Instanz von ArcGIS Web Adaptor (wie zum Beispiel /notebook) entspricht.
- Melden Sie sich beim ArcGIS Notebook Server-Administratorverzeichnis unter https://notebookserver.domain.com:11443/arcgis/admin als Benutzer mit Administratorberechtigungen an.
- Klicken Sie auf System > Properties > Update.
- Geben Sie in das Textfeld Properties das folgende JSON an und ersetzen Sie dabei Ihre eigene ArcGIS Notebook Server-URL, die Benutzern außerhalb der Firewall der Organisation angezeigt wird:
{ "WebContextURL": "https://notebookserver.domain.com/notebook" }
- Klicken Sie auf Aktualisieren.
- Starten Sie ArcGIS Notebook Server erneut. Unter Linux führen Sie die Skripte stopnotebookserver.sh und startnotebookserver.sh im Installationsordner aus.
Reverseproxykopfzeilen und ArcGIS Notebook Server
Beim Integrieren des Reverseproxys in ArcGIS Web Adaptor muss die folgende Eigenschaft in der vom Reverseproxyserver gesendeten Kopfzeile festgelegt sein:
X-Forwarded-Host=<FQDN of reverse proxy server>
Wenn diese Eigenschaft in der Kopfzeile festgelegt ist, gibt ArcGIS Web Adaptor Anforderungen an den Reverseproxyserver zurück, die mit der URL des Reverseproxyservers übereinstimmen. Eine Anforderung an das ArcGIS Notebook Server-Services-Verzeichnis (https://reverseproxy.domain.com/arcgis/rest/services) wird beispielsweise als dieselbe URL an den Client zurückgegeben.
Wenn die Kopfzeileneigenschaft X-Forwarded-Host nicht festgelegt ist, gibt ArcGIS Web Adaptor möglicherweise die URL des internen Computers zurück, an den die Anforderung gerichtet war (z. B. https://notebookserver.domain.com/arcgis/rest/services statt https://reverseproxy.domain.com/arcgis/rest/services). Dies ist problematisch, da Clients nicht auf diese URL zugreifen können (im Allgemeinen als Browserfehler 404 angegeben). Zudem erhält der Client möglicherweise Informationen zu dem internen Computer.
Bei der Problembehandlung im Zusammenhang mit der Kommunikation zwischen Clients und ArcGIS Web Adaptor wird empfohlen, die Kopfzeileneigenschaft X-Forwarded-Host im Reverseproxyserver festzulegen, da dies häufig die Ursache von Kommunikationsfehlern darstellt. Das Verfahren zum Festlegen dieser Kopfzeile ist je nach Implementierung des Reverseproxyservers unterschiedlich.
Hilfe zum Weiterleiten der ursprünglichen Host-Kopfzeile finden Sie in der Produktdokumentation zu Ihrem Reverseproxyserver.
Konfigurieren des Reverseproxyservers für eine ArcGIS Notebook Server-Site mit hoher Verfügbarkeit
Wenn Sie einen Reverseproxyserver implementieren, der mehrere Backend-Ziele mit ArcGIS Web Adaptor aufweist, die bei einer einzigen ArcGIS Notebook Server-Site registriert sind, müssen weitere Überlegungen berücksichtigt werden.
ArcGIS Notebook Server nutzt WebSocket-Verbindungen für die Kommunikation mit dem Python-Kernel. Diese WebSocket-Verbindungen erstellen eine zustandsbehaftete Sitzung, die in der Reverseproxy-Konfiguration verwaltet werden muss. Dieses Verhalten wird auch als "Session Stickiness" bezeichnet, und es kann nur mit einem Load Balancer auf Layer 7 (Anwendung) erreicht werden.
Richtige Session Stickiness kann mit Apache wie folgt erreicht werden: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>
Zudem ist es wichtig, dass die sicheren WebSocket-Verbindungen (WSS) per Proxy an die gleichen Backend-Ziele geleitet werden:<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>
Beispiel: Konfigurieren von Apache und Tomcat mit ArcGIS Notebook Server
Zum Konfigurieren eines Reverseproxys mit ArcGIS Notebook Server können Sie jede Webserver-Software verwenden. Im folgenden Beispiel-Workflow werden die Schritte zum Einrichten eines Reverseproxys mit Apache HTTP Server und Apache Tomcat beschrieben. Dies ist lediglich ein Beispiel für die Konfiguration eines Reverseproxys, keine definitive Anleitung.
In diesem Beispiel-Workflow werden die folgenden Softwareversionen verwendet, die auf demselben Computer wie ArcGIS Notebook Server installiert sind:
- Red Hat Enterprise Linux Server 7.5
- Apache HTTP Server , httpd 2.4.6
- Apache Tomcat 9.0.20 / OpenJDK 1.8.0
Diese Softwarekomponenten können sich auch in einer verteilten Architektur befinden, in der ArcGIS Notebook Server, Apache HTTP Server und Apache Tomcat auf getrennten Computern installiert sind.
Die folgenden Schritte beginnen nach der Installation und Konfiguration von ArcGIS Notebook Server und Mirantis Container Runtime und nach der Installation (ohne Konfiguration) einer Instanz von ArcGIS Web Adaptor auf einem Java-Webserver.
- Installieren Sie Tomcat für die Ausführung an Port 8080 mit dem Apache JServ Protocol (AJP), das standardmäßig aktiviert ist.
- Da Port 8443 bei Tomcat standardmäßig nicht aktiviert ist, müssen Sie SSL aktivieren und einen Konnektor für Port 8443 hinzufügen.
Dabei wird ein SSL-Zertifikat generiert und in der Tomcat-Konfigurationsdatei der Konnektor hinzugefügt. Aus Sicherheitsgründen wird empfohlen, nur TLS-Version 1.2 zu aktivieren.
... sslProtocol="TLS" SSLProtocol="TLSv1.2" ...
- Stellen Sie die Datei arcgis.war für die vorhandene Instanz von ArcGIS Web Adaptor (Java Platform) für Tomcat bereit.
In diesem Beispiel lautet die ArcGIS Web Adaptor-URL /nbs.
- Installieren Sie Apache HTTP Server .
In diesem Beispiel wird der yum-Paketmanager verwendet. Die SSL-Funktionen werden auch mit yum installiert.
yum install httpd -y yum install mod_ssl -y
- Konfigurieren Sie ein SSL-Zertifikat für die Instanz von Apache HTTP Server in ihrer ssl.conf-Datei.
- Ändern Sie die Apache httpd.conf-Datei mit Proxy-Regeln (wie im vorherigen Abschnitt beschrieben) so, dass ArcGIS Web Adaptor-Aufrufe an den AJP-Port von Tomcat weitergeleitet werden.
ProxyPass /nbs ajp://myserver.acme.com:8009/nbs ProxyPassReverse /nbs ajp://myserver.acme.com:8009/nbs
- Verwenden Sie in der Apache HTTP Server ssl.conf-Datei Proxy-Regeln zum Weiterleiten von ArcGIS Web Adaptor-SSL-Aufrufen an den AJP-Port von Tomcat. Wichtig ist, dass auch WebSocket-Anforderungen, die durch ArcGIS Notebook Server verwendet werden, weitergeleitet werden. Wenn WebSocket-Anforderungen nicht richtig behandelt werden, wird ArcGIS Notebooks nicht ordnungsgemäß geöffnet.
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>
- Starten Sie den Apache HTTP Server -Service neu, damit die Änderungen an der Konfiguration wirksam werden.
- Konfigurieren Sie ArcGIS Web Adaptor mit ArcGIS Notebook Server.