Express за прокси
При запуске приложения Express за прокси-сервером, необходимо указать (с помощью app.set()) для переменной приложения trust proxy одно из значений, приведенных в таблице ниже.
Хотя приложение будет запущено и без указания значения переменной приложения trust proxy, отсутствие заданного значения trust proxy приведет к некорректной регистрации IP-адреса прокси в качестве клиентского IP-адреса.
| Тип | Значение |
|---|---|
| Булевский |
Если указано значение Если указано значение |
| IP-адреса |
IP-адрес, подсеть или массив IP-адресов и подсетей, считающихся надежными. В приведенном ниже списке перечислены предварительно заданные имена подсетей:
IP-адреса можно задать любым из указанных ниже способов: Если IP-адреса или подсети указаны, они исключаются из процесса определения адреса, и незащищенный IP-адрес, ближайший к серверу приложений, будет определен как IP-адрес клиента. |
| Число |
Считать защищенным |
| Функция |
Реализация нестандартного механизма защиты. Используйте этот метод, только если вы уверены в своих знаниях. |
Установка значения, отличного от false, для trust proxy ведет к трем существенным изменениям:
-
Значение req.hostname является производным от значения, указанного в заголовке
X-Forwarded-Host, который может быть задан клиентом или прокси. -
Заголовок
X-Forwarded-Protoможет быть задан обратным прокси-сервером и указывает приложению на использование протоколаhttps, илиhttp, или даже недопустимого имени. Это значение отражается в req.protocol. -
Значения req.ip и req.ips заполняются собой списком адресов, взятых из
X-Forwarded-For.
Параметр trust proxy реализуется с помощью пакета proxy-addr. Дополнительная информация приведена в документации к нему.