Проброс IP-адреса клиента в http-сервис 1С. Реализация для IIS
Настраиваем веб-сервер IIS для передачи в 1С IP-адреса клиента, вызвавшего http-сервис. Разбираемся с этим же вопросом при использовании фронтэнд вебсервера на примере nginx.
- Описание
- Подробнее
Описание
На прошлой неделе была опубликована заметка "Как передать IP адрес, который вызвал HTTP запрос в 1C (для веб-сервера Apache)". Судя по "звездопаду", обрушевшемуся на неё, тема определения в приложении IP-адреса клиента является насущной для сообщества.
В упомянутой статье дан рецепт проброса клиентского IP-адреса в 1С (равно как и в любое другое приложение) с помощью кастомного http-заголовка для веб-сервера Apache.
В комментариях было задано два вопроса, оставшихся без ответа:
1. А как быть если перед сервером стоит какой-нибудь прокси, например фронтенд веб-сервер nginx?
2. Как сделать подобное для веб-сервера IIS, если это вообще возможно?
Постараюсь ответить на первый и предложить свое решение для второго. Развёрнуто и с картинками. Итак:
Фронтенд веб-сервер
Если впереди стоит фронтенд веб-сервер, например nginx, то задача решается совсем просто. Не понадобится даже использование решения, предлагаемого в вышеупомянутой статье.
Всё, что требуется, это донастроить фронтенд сервер, включив в его настройках заполнение заголовка X-Forwarded-For, который является дефакто-стандартом для передачи реального IP-адреса исходного запроса.
После включения заголовка X-Forwarded-For на фронт-сервере, этот заголовок будет доступен как в рабочем веб-сервере, так и в коде 1С. То есть мы можем обрабатывать его и извлекать необходимый IP-адрес.
Для nginx эта настройка будет выглядеть так:
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
