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 Windows, reinicie el servicio de Windows de ArcGIS Server.

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>