Исправление удаленного IP и REMOTE_ADDR с помощью mod_rpaf / mod_remoteip не работает

#php #apache #nginx #php-5.6 #apache2.4

#php #apache #nginx #php-5.6 #apache2.4

Вопрос:

Итак, я переношу какой-то устаревший PHP-проект со старого сервера на новый. Новый сервер использует Debian 10 / Nginx / Apache 2.4 / PHP 5.6.40

Я настроил все так, как привык, используя mod_rpaf для переопределения удаленного IP-адреса тем, который поступает от nginx в X-Real-IP. Я вижу правильный адрес $_SERVER['HTTP_X_REAL_IP'] в PHP, но $_SERVER['REMOTE_ADDR'] по-прежнему ‘127.0.0.1’

Вещи, которые я уже пробовал:

  • комментирование <IfModule rpaf_module> в файле rpaf.conf (в некоторых старых ответах предполагалось, что имя модуля может быть неправильным);
  • изменение конфигурационных директив с RPAFenable и т. Д. На RPAF_Enable и т. Д. — apache отказывается запускаться, Поэтому очевидно RPAFenable , что формат правильный;
  • отключение mod_rpaf и использование mod_remoteip вместо этого — никакого эффекта;
  • использование опции PHP auto_prepend_file ini file для замены REMOTE_ADDR на HTTP_X_REAL_IP — не имеет никакого эффекта, несмотря на выполнение кода (проверил его с echo '1'; помощью ).

Так что я в тупике и не вижу другого варианта, кроме как просто использовать isset($_SERVER['HTTP_X_REAL_IP']) amp;amp; $_SERVER['HTTP_X_REAL_IP'] || $_SERVER['REMOTE_ADDR'] уродливые конструкции повсюду в коде…

Но я все еще надеюсь, что я чего-то не хватает.

Обновление: на самом деле, опция auto_prepend_file работала, но кажется немного хакерской… Я все равно хотел бы найти лучший вариант.

Комментарии:

1. что вы видите в журналах apache? %a отображает необходимый IP-адрес?

2. Нет, это 127.0.0.1. %h все же отображает правильный.