Skip To Content

Configurar un servidor proxy inverso con ArcGIS Notebook Server

Un servidor proxy inverso es un equipo implementado dentro de una red perimetral (también conocida como zona desmilitarizada [DMZ] o subred filtrada) que gestiona las solicitudes de Internet y las reenvía a los equipos de la red interna. Con el reenvío de solicitudes, el servidor proxy inverso enmascara la identidad de los equipos detrás del firewall de la organización, protegiendo los equipos internos del ataque directo de los usuarios de Internet. Se pueden implementar funciones de seguridad adicionales en el servidor proxy inverso para proteger aún más la red interna de los usuarios externos.

Puede configurar su sitio de ArcGIS Notebook Server de modo que use un servidor proxy inverso de su organización. Esto es opcional. Si su organización no utiliza un proxy inverso o si no desea configurar su sitio de ArcGIS Notebook Server para que lo utilice, puede continuar con la configuración de su sitio con un portal.

Agregar ArcGIS Notebook Server a su servidor proxy inverso

El servidor proxy inverso de su organización se debe configurar para que se comunique con ArcGIS Web Adaptor agregando las URL correspondientes a las directivas proxy.

Por ejemplo, si utiliza Apache como servidor proxy inverso, tendrá que agregar la URL de ArcGIS Web Adaptor a las directivas de ProxyPass en el archivo httpd.conf de configuración del servidor web de la siguiente manera:

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

La mayoría de los servidores proxy inversos tienen un tiempo de espera de conexión de cliente configurable. Las conexiones websocket utilizadas por ArcGIS Notebook Server para comunicarse con el kernel de Python se desconectarán cuando se alcance el tiempo de espera de la conexión y aparecerá una notificación en el notebook. Si esto sucede en un intervalo coherente, por ejemplo cada 1, 3 o 5 minutos después de volver a conectarse al kernel, los tiempos de espera de la conexión a la ruta de red se deben investigar y aumentar consecuentemente.

Establecer la propiedad WebContextURL

Si utiliza un servidor proxy inverso y la URL a su sitio no termina con la cadena predeterminada /arcgis (todo en minúsculas), también se deberá eWebContextURL de ArcGIS Notebook Server. Esto ayuda a ArcGIS Notebook Server a construir las URL correctas de los recursos que envía al usuario final.

Nota:

Utilice la propiedad WebContextURL para definir la URL de ArcGIS Notebook Server para que coincida con la de su ArcGIS Web Adaptor (como /notebook).

Haga lo siguiente para cambiar la propiedad WebContextURL:

  1. Inicie sesión en el Directorio de administrador de ArcGIS Notebook Server en https://notebookserver.domain.com:11443/arcgis/admin como usuario con privilegios de administrador.
  2. Haga clic en system > properties > update.
  3. En el cuadro de texto Propiedades, escriba el siguiente JSON, sustituyendo su propia URL de ArcGIS Notebook Server tal como la ven los usuarios de fuera del firewall de su organización:
    {
       "WebContextURL": "https://notebookserver.domain.com/notebook"
    }
  4. Haga clic en Actualizar.
  5. Reinicie ArcGIS Notebook Server. En Linux, ejecute los scripts stopnotebookserver.sh y startnotebookserver.sh ubicados en la carpeta de instalación.

Encabezados del proxy inverso y ArcGIS Notebook Server

Al integrar el proxy inverso con ArcGIS Web Adaptor, la siguiente propiedad se debe establecer en el encabezado que envíe el servidor proxy inverso:

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

Si esta propiedad está establecida en el encabezado, ArcGIS Web Adaptor devolverá al servidor proxy inverso las solicitudes que coincidan con la URL del servidor proxy inverso. Por ejemplo, una solicitud al Directorio de servicios de ArcGIS Notebook Server (https://reverseproxy.domain.com/arcgis/rest/services) se devolverá al cliente como la misma URL.

Si la propiedad de encabezado X-Forwarded-Host no está definida, ArcGIS Web Adaptor puede devolver la URL del equipo interno donde se dirigió la solicitud (por ejemplo, https://notebookserver.domain.com/arcgis/rest/services en lugar de https://reverseproxy.domain.com/arcgis/rest/services). Esto es problemático, ya que no clientes no podrán acceder a esta URL (marcado comúnmente como error 404 del navegador). Además, el cliente ganará conocimiento sobre el equipo interno.

Durante la solución de problemas de comunicación entre clientes y ArcGIS Web Adaptor, se recomienda establecer la propiedad de encabezado X-Forwarded-Host en el servidor proxy inverso, ya que es una causa muy común de fallos de comunicación. La forma en que puede establecer este encabezado varía según la implementación del servidor proxy inverso.

Para obtener instrucciones sobre cómo pasar el encabezado del host original, consulte la documentación del producto para el servidor proxy inverso.

Configurar su servidor proxy inverso para un sitio de ArcGIS Notebook Server de alta disponibilidad

Al implementar un servidor proxy inverso que tiene varios destinos de back-end que ejecutan ArcGIS Web Adaptor registrado en un único sitio de ArcGIS Notebook Server, debe tener en cuenta otras consideraciones adicionales.

ArcGIS Notebook Server utiliza conexiones websocket para comunicarse con el kernel de Python. Estas conexiones websocket crean una sesión con estados que la configuración del proxy inverso debe mantener. Esto se conoce como permanencia de sesión y requiere un equilibrador de carga de capa 7 (aplicación) para lograrlo.

La permanencia de sesión correcta se puede lograr en Apache con lo siguiente:

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>

También es importante asignar proxy a las conexiones websocket (WSS) seguras con los mismos destinos de back-end:

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

Ejemplo: Configurar Apache y Tomcat con ArcGIS Notebook Server

Puede configurar un proxy inverso con ArcGIS Notebook Server utilizando cualquier software de servidor web. El siguiente flujo de trabajo de describe los pasos para configurar un proxy inverso mediante Apache HTTP Server y Apache Tomcat. Este es un ejemplo de una configuración de proxy inverso, no instrucciones definitivas.

Este flujo de trabajo de muestra utiliza el software y las versiones siguientes, todos instalados en el mismo equipo que 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

Estos componentes de software también pueden estar en una arquitectura distribuida, con ArcGIS Notebook Server, Apache HTTP Server y Apache Tomcat en equipos diferentes.

Los siguientes pasos comienzan después de que se hayan instalado y configurado ArcGIS Notebook Server y Mirantis Container Runtime, y de que se haya instalado una instancia de ArcGIS Web Adaptor en un servidor web Java, pero no se haya configurado.

  1. Instale Tomcat para ejecutar en el puerto 8080 utilizando el protocolo JServ de Apache (AJP), que está habilitado de forma predeterminada.
  2. Dado que el puerto 8443 no está habilitado de forma predeterminada en Tomcat, habilite SSL y agregue un conector para el puerto 8443.

    Esto implica generar un certificado SSL y editar el archivo de configuración de Tomcat para agregar el conector. Como práctica recomendada de seguridad, solo debería estar habilitada la versión 1.2 de TLS.

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

  3. Implemente el archivo arcgis.war para el ArcGIS Web Adaptor (Java Platform) existente en Tomcat.

    Para este ejemplo, la URL de ArcGIS Web Adaptor es /nbs.

  4. Instale Apache HTTP Server .

    Para este ejemplo, se utiliza el administrador de paquetes yum. Las capacidades de SSL también se instalan con yum.

    yum install httpd -y
    yum install mod_ssl -y

  5. Configure un certificado SSL para Apache HTTP Server en su archivo ssl.conf.
  6. Modifique el archivo httpd.conf de Apache con reglas del proxy (como se ha descrito en la sección anterior) para llamadas proxy de ArcGIS Web Adaptor al puerto AJP de Tomcat.

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

  7. En el archivo ssl.conf de Apache HTTP Server , utilice reglas proxy para las llamadas proxy de SSL de ArcGIS Web Adaptor al puerto AJP de Tomcat. También es importante para las solicitudes de proxy de WebSocket que utiliza ArcGIS Notebook Server; si las solicitudes de WebSocket no se gestionan adecuadamente, ArcGIS Notebooks no se abrirá correctamente.

    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. Reinicie el servicio de Apache HTTP Server para que los cambios de configuración surtan efecto.
  9. Configure ArcGIS Web Adaptor con ArcGIS Notebook Server.