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 Linux, execute os scripts stopnotebookserver.sh e startnotebookserver.sh localizados na pasta da instalação.

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>

Exemplo: Configurar o Apache e Tomcat com ArcGIS Notebook Server

Você pode configurar um proxy reverso com ArcGIS Notebook Server utilizando qualquer software de servidor da web. O exemplo de fluxo de trabalho a seguir descreve as etapas para configurar um proxy reverso usando Apache HTTP Server e Apache Tomcat. Este é um exemplo de configuração de proxy reverso, não instruções definitivas.

Este fluxo de trabalho de amostra usa o seguinte software e versões, todos instalados na mesma máquina 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

Estes componentes de software também podem estar em uma arquitetura distribuída, com ArcGIS Notebook Server, Apache HTTP Server , e Apache Tomcat todas em máquinas separadas.

Os etapas seguintes começam após o ArcGIS Notebook Server e Mirantis Container Runtime ter sido instalado e configurado e uma instância do ArcGIS Web Adaptor ter sido instalada em um servidor web Java, mas que não tenha sido configurado.

  1. Instale o Tomcat para executar na porta 8080 usando o protocolo Apache JServ (AJP), que é habilitado por padrão.
  2. Como a porta 8443 não está habilitada por padrão no Tomcat, habilite SSL e adicione um conector para a porta 8443.

    Isso envolve a geração de um certificado SSL e a edição do arquivo de configuração do Tomcat para adicionar o conector. Como prática recomendada de segurança, apenas o TLS versão 1.2 deve ser ativado.

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

  3. Implante o arquivo arcgis.war do ArcGIS Web Adaptor (Java Platform) existente no Tomcat.

    Para este exemplo, a URL do ArcGIS Web Adaptor é /nbs.

  4. Instale o Apache HTTP Server .

    Para este exemplo, o gerenciador de pacotes yum é usado. Os recursos SSL também são instalados usando yum.

    yum install httpd -y
    yum install mod_ssl -y

  5. Configure um certificado SSL para o Apache HTTP Server em seu arquivo ssl.conf.
  6. Modifique o arquivo httpd.conf do Apache utilizando regras de proxy (como discutido na seção anterior) para chamadas de proxy do ArcGIS Web Adaptor para a porta AJP do Tomcat.

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

  7. No arquivo ssl.conf do Apache HTTP Server , utilize regras de proxy para chamadas SSL de proxy do ArcGIS Web Adaptor para a porta AJP do Tomcat. É importante também fazer pedidos de proxy de WebSocket, que são usados pelo ArcGIS Notebook Server; se os pedidos do WebSocket não forem tratados corretamente, o ArcGIS Notebooks não abriá corretamente.

    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 o serviço Apache HTTP Server das alterações de configuração para entrar em vigor.
  9. Configure o ArcGIS Web Adaptor com ArcGIS Notebook Server.