Skip to main content

Настройте обратный прокси-сервер с помощью ArcGIS Notebook Server

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

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

Добавьте ArcGIS Notebook Server на ваш обратный прокси-сервер

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

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

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 таким образом, чтобы он соответствовал URL его веб‑адаптера 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 перезапустите сервис Windows ArcGIS Server.

  6. Перезапустите 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 (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 с помощью ArcGIS Notebook Server.