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. В Windows выполните перезапуск сервиса ArcGIS Server Windows.

Заголовки обратного прокси-сервера и 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>