Skip To Content

Настройка обратного прокси-сервера для работы с ArcGIS Notebook Server

Обратный прокси-сервер – это компьютер, установленный в пределах пограничной сети (так называемой демилитаризованной зоны или промежуточной подсети), который обрабатывает запросы из Интернета и перенаправляет их на компьютеры внутренней сети. Перенаправляя запросы, обратный прокси-сервер маскирует идентичность компьютеров, находящихся за брандмауэром организации, защищая таким образом внутренние компьютеры от прямых атак со стороны пользователей интернета. На обратном прокси-сервере можно реализовать дополнительные функции безопасности, позволяющие еще больше защитить внутреннюю сеть от пользователей извне.

Вы можете настроить свой сайт ArcGIS Notebook Server на использование обратного прокси-сервера вашей организации. Этот пункт является необязательным. Если ваша организация еще не использует обратный прокси-сервер или вы не хотите настраивать его использование для своего сайта ArcGIS Notebook Server, перейдите к настройке своего сайта с порталом.

Добавление ArcGIS Notebook Server к обратному прокси-серверу.

Обратный прокси-сервер организации нужно настроить для обмена данными с ArcGIS Web Adaptor, добавив соответствующие URL-адреса в директивы прокси.

Например, если вы используете Apache в качестве обратного прокси-сервера, вам потребуется добавить URL ArcGIS Web Adaptor в директивы ProxyPass в файле конфигурации httpd.conf веб-сервера Apache:

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

Большинство обратных прокси-серверов имеют настраиваемый тайм-аут клиентского подключения. Соединения веб-сокетов, используемые ArcGIS Notebook Server для связи с ядром Python, будут отключены, когда истечет время ожидания подключения, и в блокноте появится уведомление. Если это происходит с постоянным интервалом, например, каждые 1, 3 или 5 минут после повторного подключения к ядру, следует изучить таймауты подключения к сетевому пути и соответственно увеличить их.

Задание свойства WebContextURL

Если вы используете обратный прокси-сервер, и окончание URL вашего сайта отличается от заданного по умолчанию /arcgis (все буквы строчные), то вам следует также задать для ArcGIS Notebook Server свойство WebContextURL. Это позволит ArcGIS Notebook Server построить корректные URL-адреса для всех ресурсов, которые он направляет конечному пользователю.

Примечание:

Воспользуйтесь свойством WebContextURL, чтобы задать URL ArcGIS Notebook Server, соответствующий ArcGIS Web Adaptor (например, /notebook).

Чтобы изменить свойство WebContextURL, выполните следующие действия:

  1. Откройте ArcGIS Notebook Server Administrator Directory по адресу https://notebookserver.domain.com:11443/arcgis/admin и войдите как пользователь с правами администратора.
  2. Щелкните система > свойства > обновить.
  3. В текстовом окне Свойства вставьте следующий JSON, заменив собственный URL ArcGIS Notebook Server, который видят пользователи за пределами брандмауэра вашей организации.
    {
       "WebContextURL": "https://notebookserver.domain.com/notebook"
    }
  4. Щёлкните Обновить.
  5. Перезапустите ArcGIS Notebook Server. В Linux выполните скрипты stopnotebookserver.sh и startnotebookserver.sh, которые можно найти в установочной папке.

Заголовки обратного прокси-сервера и ArcGIS Notebook Server

При интеграции обратного прокси-сервера с ArcGIS Web Adaptor нужно задать следующее свойство, установленное в заголовке, который был отправлен обратным прокси-сервером:

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

Если в заголовке указан этот параметр, ArcGIS Web Adaptor будет возвращать запросы обратному прокси-серверу, которые соответствуют URL-адресу обратного прокси-сервера. Например, запрос к ArcGIS Notebook Server Services Directory (https://reverseproxy.domain.com/arcgis/rest/services) будет возвращен клиенту в виде того же URL-адреса.

Если это свойство заголовка X-Forwarded-Host установлено не будет, ArcGIS Web Adaptor может возвратить URL внутреннего компьютера, на который был направлен запрос, например, https://notebookserver.domain.com/arcgis/rest/services вместо https://reverseproxy.domain.com/arcgis/rest/services. Это проблематично, т.к. клиенты не смогут получить доступ к этому URL-адресу (обычно выглядит как ошибка 404 в браузере). Также клиент получит некоторые сведения о внутреннем компьютере.

При устранении проблем связи между клиентами и ArcGIS Web Adaptor, рекомендуется задать свойство X-Forwarded-Host заголовка обратного прокси-сервера, т.к. это обычная причина коммуникационных сбоев. Способ задания заголовка зависит от реализации обратного прокси-сервера.

Указания по передаче оригинального заголовка хоста можно найти в документации для вашего прокси-сервера.

Настройка обратного прокси-сервера для отказоустойчивого сайта ArcGIS Notebook Server

При реализации обратного прокси-сервера с несколькими внутренними целевыми объектами, зарегистрированными ArcGIS Web Adaptor на одном сайте ArcGIS Notebook Server, необходимо учитывать дополнительные соображения.

ArcGIS Notebook Server использует соединения через веб-сокеты для связи с ядром Python. Эти подключения к веб-сокетам создают сеанс с отслеживанием состояния, который должен поддерживаться конфигурацией обратного прокси. Это называется привязкой сеанса, и для этого требуется балансировщик нагрузки уровня 7 (приложения).

Правильная привязка сеанса может быть достигнута в Apache с помощью следующего:

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>

Также важно проксировать защищенные соединения веб-сокетов (WSS) на одни и те же внутренние цели:

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

Пример: Настройка Apache и Tomcat с ArcGIS Notebook Server

Вы можете настроить для обратного прокси-сервера с ArcGIS Notebook Server любой веб-сервер. Ниже описаны действия, которые необходимо выполнить для настройки для обратного прокси-сервера Apache HTTP Server и Apache Tomcat. Это только один из вариантов конфигурации обратного прокси-сервера, а не обязательные инструкции.

В этом примере рабочего процесса используются следующие программы и версии, установленные на том же компьютере, что и 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

Эти компоненты программного обеспечения могут работать и в распределенной архитектуре - с ArcGIS Notebook Server, Apache HTTP Server и Apache Tomcat на отдельных компьютерах.

Следующие шаги нужно выполнить после того, как будут установлены и настроены ArcGIS Notebook Server и Mirantis Container Runtime, а экземпляр ArcGIS Web Adaptor будет установлен на веб-сервере Java, но не был настроен.

  1. Установите Tomcat для его запуска через порт 8080 через протокол Apache JServ Protocol (AJP), который включен по умолчанию.
  2. Поскольку порт 8443 по умолчанию в Tomcat не включен, включите SSL и добавьте коннектор для порта 8443.

    Это позволит создать сертификат SSL и отредактировать файл конфигурации Tomcat для добавления коннектора. С точки зрения обеспечения безопасности лучше всего включить только TLS версии 1.2.

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

  3. Разверните файл arcgis.war для имеющегося ArcGIS Web Adaptor (Java Platform) в Tomcat.

    К примеру, URL ArcGIS Web Adaptor - это /nbs.

  4. Установите Apache HTTP Server.

    В этом случае будет использоваться менеджер пакетов yum . Возможности SSL также устанавливаются в yum.

    yum install httpd -y
    yum install mod_ssl -y

  5. Проверьте ваш сертификат SSL для Apache HTTP Server в файле ssl.conf.
  6. Измените файл Apache httpd.conf, используя правила прокси (как обсуждалось в предыдущем разделе) для прокси-вызовов ArcGIS Web Adaptor на порт AJP Tomcat.

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

  7. Для файла Apache HTTP Server ssl.conf используйте правила прокси для SSL прокси-вызовов ArcGIS Web Adaptor к порту AJP Tomcat. Также важно проксировать запросы WebSocket, которые используются ArcGIS Notebook Server. Если запросы WebSocket не обрабатываются должным образом, ArcGIS Notebooks не будут корректно открываться.

    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. Перезапустите сервис Apache HTTP Server, чтобы изменения конфигурации вступили в силу.
  9. Настройте ArcGIS Web Adaptor с ArcGIS Notebook Server.