Работа с прокси

При некоторых обстоятельствах Esri Maps for IBM Cognos использует механизм внутреннего прокси в качестве программы-посредника для коммуникации с платформой ArcGIS (дополнительно к любым веб-сервисам, на которые ссылаются извлеченные элементы ArcGIS). При необходимости, Esri Maps for IBM Cognos отправляет HTTP-запросы на прокси-сервер, который перенаправляет их на удаленный веб-сервер (например, ArcGIS). Затем прокси возвращает ответ обратно в Esri Maps for IBM Cognos.

– механизм внутреннего прокси

Внутренний прокси не используется, если Esri Maps for IBM Cognos и все используемые им данные и сервисы находятся в одном домене, либо если и клиентский браузер, и все сервера поддерживают Cross-Origin Resource Sharing (CORS) (обмен ресурсами с запросом происхождения). В большинстве случаев, однако, эта конфигурация нетипична, поэтому все же рекомендуется настроить внутренний прокси.

Указание серверов с возможностью CORS (не обязательно)

Большинство современных браузеров используют рекомендуемый стандарт CORS. Он добавляет заголовки в спецификацию HTTP, которая позволяет серверам описывать набор источников, которые разрешены для чтения ресурсов и сервисов, используемых веб-браузером.

Esri Maps for IBM Cognos автоматически определяет сервера, которые используют CORS, и взаимодействует с ними без проблем. Однако в некоторых случаях исходный запрос (например, HTTP POST) автоматически проходит через внутренний прокси Esri Maps for IBM Cognos, даже если браузер поддерживает CORS. В качестве администратора Esri Maps for IBM Cognos вы можете указать списки адресов URL для известных серверов с CORS в файле конфигурации Esri Maps for IBM Cognos (settings.js), чтобы наверняка убедиться в том, что все вызовы из этих источников будут автоматически считаться имеющими CORS и пройдут через прокси.

Для указания серверов с поддержкой CORS, выполните эти шаги:

  1. Для открытия файла конфигурации приложения используйте стандартный текстовый редактор.

    Файл конфигурации находится на EM4C Gateway в: <em4c_location>\webcontent\esrimap\configuration\settings.js

  2. В свойстве corsEnabledServers укажите адреса URL серверов, которые должны автоматически считаться имеющими CORS.

    Каждый URL должен быть заключен в кавычки, разделить названия нужно запятыми.

    Например: corsEnabledServers: ["mapserver.mycompany.com", "otherserver.othercompany.com"]

  3. Сохраните и закройте файл settings.js.

Настройка внутреннего прокси

Несмотря на то, что внутренний прокси разработан для работы с минимальной пользовательской настройкой, все равно можно изменить некоторые его свойства, чтобы разрешить запросы к определенным серверам, иными словами, можно задать ресурсы, на которые прокси будет перенаправлять запросы.

Для этого нужно внести изменения в файл прокси-конфигурации, используя обычный текстовой редактор.

Файл конфигурации прокси (proxy.conf) находится на портале EM4C по адресу <em4c_location>\temp\proxy.conf.

Чтобы задать URL-адреса, к которым разрешен доступ для Esri Maps for IBM Cognos, задайте каждый отдельный URL в отдельном свойстве serverUrl. Создайте отдельное свойство serverUrl для каждого сервера, к которому Esri Maps for IBM Cognos должен иметь доступ для получения картографических сервисов.

Например:

matchUrls = true
serverUrl = http://www.arcgis.com
serverUrl = https://arcgis.com
serverUrl = http://myserver.mycompany.com

Тестирование прокси

Чтобы протестировать внутренний прокси, прогоните через него запрос HTTP. Если вернулось ожидаемое значение, значит, прокси работает корректно. Ниже приведены примеры вызовов, которые симулируют трафик HTTP, который будет генерировать Esri Maps for IBM Cognos.

  1. Чтобы проверить расположение внутреннего прокси Esri Maps for IBM Cognos, введите его URL в адресной строке браузера.

    http://myibmcognosserver/ibmcognos/em4c/cgi-bin/em4c.cgi

    Если подключение к внутреннему прокси прошло успешно, отобразится страница с меткой времени, например, Thu Oct 02 07:34:52 PDT 2014. Если ответ оказался другим, проверьте настройки прокси.

  2. Еще проверьте, что можете подключиться к известному ресурсу.

    Например, каждый из следующих URL должен возвращать объект JSON, который описывает версию ПО, установленного на сервер.

    • ArcGIS Online: http://www.arcgis.com/sharing?f=pjson
    • Экземпляр Portal for ArcGIS: http://myPortal/gis/sharing/?f=pjson

  3. Маршрутизация трафика через внутренний прокси.

    Например, каждый из следующих URL должен возвращать объект JSON, который описывает версию ПО, установленного на сервер.

    • ArcGIS Online: http://ibmcognosserver/ibmcognos/em4c/cgi-bin/em4c.cgi?http://www.arcgis.com/sharing?f=pjson
    • Экземпляр Portal for ArcGIS: http://ibmcognosserver/ibmcognos/em4c/cgi-bin/em4c.cgi?http://myPortal/gis/sharing/?f=pjson

    Если результат будет положительный, это значит, что оба прокси настроены и работают правильно.

Настройка исходящего прокси-сервера

В ситуации, когда Esri Maps for IBM Cognos должен использовать внутренний прокси, он должен быть доступен для запросов HTTP для целевых ресурсов (например, картографических сервисов). В некоторых случаях правила файервола не позволяют отправить эти запросы, например, файервол может не пускать HTTP-трафик за пределы внутренней сети.

Для решения этой проблемы необходимо настроить исходящий направляющий прокси.

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

Размещение прокси-сервера в периметре сети для защиты внутренней сети

Исходящий прокси сам по себе представляет стороннее решение корпоративного уровня. Он не является частью Esri Maps for IBM Cognos.

Файл конфигурации прокси Esri Maps for IBM Cognos содержит элементы, которые позволяют выполнить настройку исходящего прокси.

Измените файл конфигурации прокси с помощью стандартного текстового редактора.

  1. Установите свойство upStreamProxy равным значению true.
  2. Укажите upStreamProxyUrl следующим образом:
    http://<address>:<port>
    

    где:

    • address – адрес провайдера прокси-сервера, например, proxy.mycompany.com
    • port – номер порта, назначенный прокси-серверу, например, 8888

    Например:

    upStreamProxy = true
    upStreamProxyUrl = http://proxy.mycompany.com:8888
    

  3. Для тестирования исходящего прокси отправьте запрос через внутренний прокси, который должен передать этот запрос через исходящий. Более подробно см. Тестирование прокси.