У меня проблема с сервером HAProxy. Я хочу перенаправить в заголовок IP клиента. Я почти сделал это, но есть интересный случай, и я не могу в нем разобраться. Мне нужно написать IP-адрес клиента в 2-х местах заголовка, в тегах X-CLIENT-IP и X-FORWARDED-FOR.
Проблема в следующем: когда я использую
option http-server-close
option forwardfor
На целевом сервере я вижу в заголовке X-FORWARDED-FOR = xxx.xxx.xxx.xxx (ip-адрес клиента), но заголовок x-client-ip отсутствует.
Когда я использую:
option forwardfor header X-Client-IP
option http-server-close
На целевом сервере я вижу заголовок X-CLIENT-IP = xxx.xxx.xxx (клиентский IP), но X-FORWARDED-FOR = xxx.xxx.xxx.xxx (HAProxy ip)
Мне нужно увидеть в целевом заголовке, где X-CLIENT-IP и X-FORWARDED-FOR имеют значение клиентского IP.
Я пытаюсь смешивать конфигурации вроде
option forwardfor
option forwardfor header X-Client-IP
option http-server-close
Никакого эффекта. Также не могу установить какие-либо модули. Цель - IIS.
Любые идеи? :(
Вы можете попробовать настроить собственный заголовок, например:
http-request set-header X-Client-IP %[src]
Или вы даже можете скопировать его из заголовка X-Forwarded-For, я думаю, синтаксис будет примерно таким:
http-request set-header X-Client-IP req.hdr_ip([X-Forwarded-For])
Если вы хотите использовать оба, вам нужно добавить вторую с http-request
ключевое слово.
# add X-FORWARDED-FOR
option forwardfor
# add X-CLIENT-IP
http-request add-header X-CLIENT-IP %[src]
Предлагаемый выше ответ, который не сработал для KacproSo, просто нужно было прочитать значение, добавив &[...]
, так что это должно работать нормально:
http-request set-header X-Client-IP %[req.hdr_ip([X-Forwarded-For])]
Пробуем HAproxy 1.7, это правильный синтаксис, который делает эту работу, без квадратных скобок вокруг X-Forwarded-For
http-request set-header X-Client-IP %[req.hdr_ip(X-Forwarded-For)]
этот подходит мне лучше всего:
backend example
mode http
option forwardfor
http-request set-header X-Forwarded-For %[src]
Вы можете установить модуль mod_rpaf на свой сервер (а). Это копирует X-FORWARDED-FOR IP в X-CLIENT-IP. Для получения дополнительной информации см. этот. В Windows у вас должны быть аналогичные модули, что-то вроде фильтров X-Forwarded-For ASAPI.