WEB-приложение Сведение отчетности  (23.11.2023)
Поддержка соединения для запросов выполняющихся длительное время (более 1-2 мин)

При работе тонкого клиента напрямую с сервером приложений, подобной проблемы не возникает, т.к. тонкий клиент и сервер приложений самостоятельно поддерживают длительные запросы к СУБД, без стороннего воздействия.

При работе тонкого клиента через серверный прокси, запросы, выполняющиеся на сервере СУБД, продолжительное время (более 1-2 мин), могут быть расценены клиентом как запросы, на которые не поступил ответ. В результате, взаимодействие с сервером прекращается, и клиент получает ошибку Cannot initiate intercommunication with remote server. Please, check provided address information.

Для решения данной проблемы, необходимо помочь серверу приложений определить, что он работает через серверный прокси (reverse proxy).

Для этого необходимо настроить 2 момента:

  1.  Запросы клиентов, перенаправляемые серверным прокси, на сервер приложений, должны содержать какой-то из следующих заголовков:
    • X-Original-URL
    • X-Forwarded-For
    • X-Real-IP
    Значение этих заголовков не имеет значения, важно просто наличие одного из них.
    Пример
    В nginx, в качестве одного из вариантов, можно указать в его конфиге - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  2. Таймауты серверного прокси для ожидания ответа от сервера приложений, должны быть достаточно большими, чтобы длительный запрос успел выполниться в СУБД.
    Пример
    В nginx, в его конфиге нужно указать - proxy_read_timeout 300s; #вместо 300 сек укажите свое значение, по умолчанию nginx использует 1 мин.