Обратный прокси-сервер
В реальных развертываниях часто хочется исключить доступ пользователей к внутренним сетевым ресурсам. Как правило, это решается использованием обратного прокси-сервера (Reverse Proxy), который установлен в демилитаризованной зоне (DMZ), доступен из внешней сети и имеет доступ к внутренней сети. Пользователи имеют доступ только ко внешнему интерфейсу прокси-сервера и не могут напрямую обращаться к ресурсам во внутренней сети, в которой развернут сервер.
Такой подход также позволяет предоставлять доступ пользователям из внешней сети только к избранным ресурсам сервера. Соответственно, администратор сервера, который имеет доступ из внутренней сети, может пользоваться ресурсами сервера, которые недоступны внешним пользователям.
В данном разделе описаны общие принципы поддержки Reverse Proxy, зная которые можно настроить любой готовый прокси-сервер или написать свой. Также приводятся варианты конфигурации прокси на примере популярного прокси-сервера nginx.
Механизм формирования URL в ответах сервера при работе за reverse proxy
Использование proxy-серверов осложняет задачу формирования URL в ответах сервера (это могут быть URL в представлении ресурсов или URL в заголовках): сервер «1С:Персонала» получает запрос от proxy-сервера и не может восстановить исходный URL используя одни лишь данные из строки запроса и заголовка HOST. Другими словами сервер не в состоянии сформировать URL к ресурсу каким он видится клиенту.
Для передачи данных, необходимых для восстановле ния URL используются заголовки X-Forwarded-*. Они устанавливаются ближайшим к клиенту proxy-сервером и несут всю необходимую для формирования URL информацию:
- хост, к которому обратился клиент;
- порт, на хосте к которому обратился клиент;
- протокол взаимодействия между клиентом и ближайшим proxy;
- префикс сегмента path, который используется proxy для выделения запросов к целевому серверу (или следующему proxy в цепочке).
Ниже описаны заголовки, которые может использовать proxy-сервер и которые поддерживаются компактным сервером.
X-Forwarded-Proto
Схема, которая использовалась клиентом при отправке запроса на ближайший к нему proxy-сервер.
Если этот заголовок присутствует, то компактный сервер использует значение в качестве схемы во всех генерируемых URL.
Возможные значения: http, https.