Skip To Content

Configure um servidor proxy reverso com ArcGIS Notebook Server

Um servidor proxy reverso é um computador que é implantado dentro de uma rede de perímetro (também conhecida como uma zona desmilitarizada [DMZ] ou sub rede) que manipula os pedidos da Internet e os encaminham para as máquinas na sua rede interna. Ao encaminhar solicitações, o servidor proxy reverso mascara a identidade das máquinas atrás do firewall da sua organização, protegendo as máquinas internas de ataques diretos de usuários da Internet. As funções de segurança adicionais pode ser implementadas no servidor proxy reverso para proteger sua rede interna de usuários externos.

Você pode configurar seu site do ArcGIS Notebook Server para usar o servidor proxy reverso da sua organização. Isto é opcional. Se sua organização não usa um proxy reverso, ou se você não deseja configurar seu site do ArcGIS Notebook Server para usar um, você pode continuar configurando seu site com um portal.

Adicione o ArcGIS Notebook Server ao seu servidor proxy reverso.

O servidor proxy reverso da sua organização deve ser configurado para se comunicar com ArcGIS Web Adaptor adicionando as URLs correspondentes às diretivas de proxy.

Por exemplo, se estiver usando o Apache como um servidor proxy reverso, você precisará adicionar a URL do ArcGIS Web Adaptor às diretivas ProxyPass no arquivo httpd.conf de configuração do servidor da web Apache da seguinte maneira:

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

A maioria dos servidores proxy reverso tem um tempo limite de conexão do cliente configurável. As conexões do websocket usadas pelo ArcGIS Notebook Server para se comunicar com o kernel do Python serão desconectadas quando o tempo limite da conexão for atingido e uma notificação aparecerá no notebook. Se isso acontecer em um intervalo consistente, por exemplo, a cada 1, 3 ou 5 minutos após a reconexão com o kernel, os tempos limite de conexão com o caminho da rede deverão ser investigados e aumentados de acordo.

Configurar a propriedade WebContextURL

Se você estiver usando um servidor proxy reverso e a URL do seu site não terminar com a string padrão /arcgis (todas em letras minúsculas), você também deverá definir a propriedade WebContextURL do ArcGIS Notebook Server. Isso ajuda o ArcGIS Notebook Server a construir as URLs corretas nos recursos que envia ao usuário final.

Anotação:

Utilize a propriedade WebContextURL para configurar a URL do ArcGIS Notebook Server para corresponder ao seu ArcGIS Web Adaptor (como /notebook).

Faça o seguinte para alterar a propriedade WebContextURL:

  1. Entre no ArcGIS Notebook Server Administrator Directory em https://notebookserver.domain.com:11443/arcgis/admin como um usuário com privilégios de administrador.
  2. Clique em sistema > propriedades > atualizar.
  3. Na caixa de texto Propriedades, insira o seguinte JSON, substituindo sua própria URL ArcGIS Notebook Server conforme visto por usuários fora do firewall de sua organização:
    {
       "WebContextURL": "https://notebookserver.domain.com/notebook"
    }
  4. Clique em Atualizar.
  5. Reinicie o ArcGIS Notebook Server. No Windows, reinicie o serviço do Windows do ArcGIS Server.

Cabeçalhos de proxy reverso e ArcGIS Notebook Server

Ao integrar seu proxy reverso com ArcGIS Web Adaptor, a seguinte propriedade deve ser definida no cabeçalho enviado pelo servidor proxy reverso:

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

Se essa propriedade for configurada no cabeçalho, o ArcGIS Web Adaptor retornará solicitações ao servidor proxy reverso que correspondem à URL do servidor proxy reverso. Por exemplo, uma solicitação ao Diretório de Serviços do ArcGIS Notebook Server (https://reverseproxy.domain.com/arcgis/rest/services) será retornada ao cliente como a mesma URL.

Se a propriedade do cabeçalho X-Forwarded-Host não estiver configurada, o ArcGIS Web Adaptor poderá retornar a URL da máquina interna para a qual a solicitação foi direcionada, por exemplo, https://notebookserver.domain.com/arcgis/rest/services em vez de https://reverseproxy.domain.com/arcgis/rest/services. Isto é problemático, pois clientes não poderão acessar esta URL (comumente notado como um erro 404 do navegador). Além disso, o cliente ganhará algum conhecimento sobre a máquina interna.

Ao solucionar problemas de comunicação entre clientes e ArcGIS Web Adaptor, é recomendado que você defina a propriedade do cabeçalho X-Forwarded-Host no servidor proxy reverso, pois esta é uma causa comum de falhas de comunicação. A maneira como você define este cabeçalho varia dependendo da implementação do servidor proxy reverso.

Para obter orientação sobre como passar o cabeçalho do host original, consulte a documentação do produto para seu servidor proxy reverso.

Configurando seu servidor proxy reverso para um site do ArcGIS Notebook Server altamente disponível

Ao implementar um servidor proxy reverso que com vários destinos de back-end em execução no ArcGIS Web Adaptor registrado em um único site do ArcGIS Notebook Server, há considerações adicionais que devem ser levadas em consideração.

O ArcGIS Notebook Server usa conexões de websocket para se comunicar com o kernel de Python. Essas conexões de websocket criam uma sessão com estado que deve ser mantida pela configuração do proxy reverso. Isso é conhecido como aderência da sessão e exige um balanceador de carga 7 da camada (aplicativo) para ser alcançado.

A aderência correta da sessão pode ser alcançada no Apache com o seguinte:

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>

Também é importante fazer o proxy das conexões de websocket seguro (WSS) para os mesmos 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>