X-Forwarded-For не работает на веб-сервере apache

Добрый день,

Ниже приведена диаграмма архитектуры моего веб-проекта.

Internet --> F5 Load balancer --> Apache web server --> web application

Я пытаюсь заставить веб-сервер Apache получать IP-адрес пользователя из Интернета из балансировщика нагрузки.

Однако я обнаружил, что Apache Web Server получает F5 ip от F5 Load balancer вместо IP-адреса пользователя из Интернета.

Таким образом, я открываю httpd.conf с веб-сервера и настраиваю параметр X-Forwarded-For внутри, следующее значение, которое я добавил в httpd.conf:

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
# The following line is added by me
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" proxy 

# I commented this following line
#CustomLog logs/access_log combined
# The following 3 lines is added by me
SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" forwarded
CustomLog "logs/access_log" combined env=!forwarded
CustomLog "logs/access_log" proxy env=forwarded

Я перезапускаю apache сервер, но результат все тот же. Могу ли я узнать, что я неправильно указал в конфигурации?


person Panadol Chong    schedule 22.07.2019    source источник
comment
Может быть, у вас есть другой файл .conf, который имеет приоритет (обычно виртуальные хосты определяются в отдельных файлах conf)?   -  person Dusan Bajic    schedule 22.07.2019
comment
@DusanBajic, другого файла .conf не видел. Но я подозреваю, что F5 не возвращает IP-адрес клиента на веб-сервер, знаете ли вы, как проверить или как войти в журнал, чтобы я мог узнать, возвращает ли F5 мне IP-адрес клиента?   -  person Panadol Chong    schedule 23.07.2019
comment
В ваших журналах в поле, где вы ожидаете увидеть IP-адрес клиента, вы ничего не видите или видите IP-адрес f5?   -  person Dusan Bajic    schedule 23.07.2019
comment
Видеть только IP-адрес F5, но я не уверен, как доказать, что F5 не вернул IP-адрес клиента, поэтому планирую выяснить это в первую очередь.   -  person Panadol Chong    schedule 23.07.2019
comment
Измените комбинированный формат журнала, чтобы включить оба: LogFormat "%{X-Forwarded-For}i %h %l ... и посмотреть, что произойдет   -  person Dusan Bajic    schedule 23.07.2019
comment
Вы не увидите заголовок XFF, если он не настроен на F5 LoadBalancer. F5 LoadBalancer — это полноценный прокси-сервер, что означает, что он инициирует совершенно новое подключение клиента к вашему серверу. Он не будет пересылать заголовок XFF, если он не настроен для этого.   -  person Paul Dawson    schedule 23.07.2019


Ответы (1)


Вам нужно включить параметр Insert X-Forwarded-For в профиле HTTP балансировщика нагрузки F5:

Local Traffic > Profiles > HTTP 

введите здесь описание изображения

person Paul Dawson    schedule 22.07.2019
comment
Да, это изображение веб-интерфейса F5. - person Paul Dawson; 23.07.2019
comment
В настоящее время у меня нет прав доступа к F5, но я подозреваю, что F5 не возвращает IP-адрес клиента на веб-сервер, знаете ли вы, как проверить или как войти в журнал, чтобы я мог узнать, возвращает ли F5 мне IP-адрес клиента? - person Panadol Chong; 23.07.2019
comment
Если вы используете *nix, используйте TCPDUMP для отображения заголовков (fir3net.com/UNIX/Linux/) — если вы используете Windows, используйте wireshark для захвата трафика и просмотра заголовков HTTP. Если HTTP-заголовок XFF отсутствует, то F5 BIGIP LoadBalancer их не вставляет. - person Paul Dawson; 23.07.2019
comment
Веб-сервер использует Linux, однако я нажимаю tcpdump: команда не найдена. Есть ли способ проверить это в журнале веб-сервера? - person Panadol Chong; 23.07.2019
comment
Если вы включите низкоуровневое ведение журнала, вы сможете: apache" title="можно ли регистрировать все заголовки HTTP-запросов с помощью apache">stackoverflow.com/questions/9948064/ - person Paul Dawson; 23.07.2019