Назад | Перейти на главную страницу

Apache2.4 Require IP не работает, потому что 127.0.0.1

Я пытаюсь настроить .htaccess на Apache 2.4, используя Require ip X.X.X.X

Проблема, с которой я столкнулся, заключается в том, что все запросы, похоже, поступают с 127.0.0.1, а не с общедоступного IP-адреса запроса. При поиске в Интернете я обнаружил, что это, вероятно, связано с кешированием или проксированием на сервере.

Сервер OS X Server, когда мне запрещают на сервере, журнал показывает, что мой запрос пришел с 127.0.0.1, но я определенно не на локальном хосте. Имеет ли apache какое-либо проксирование такого рода, которое могло бы вызвать это?

Я нашел ответ:

  1. Отключите кеш производительности в Server Admin -> Web -> Settings -> Sites -> Options. Он действует как прокси-сервер перед Apache для повышения производительности определенных файлов. Однако одним из побочных эффектов является то, что Apache видит IP-адрес прокси-сервера, а не IP-адрес пользователя. Кэш производительности или удаленные IP-адреса. Выбери один. Вы не можете иметь обоих

К сожалению, это старый ответ, и здесь больше нет администратора сервера -> Интернет -> Настройки -> Сайты -> Параметры. Есть догадки, что это может измениться?

Возможно, вы уже решили это. Не уверен, какая версия сервера OSX у вас установлена, но вы правы, предполагая, что это проблема прокси. У меня сработало отредактировать файл httpd_server_app.conf. В разделе IfModule log_config_module вы найдете форматы ведения журнала.

Это тот, который нужно отредактировать:

LogFormat "%v %a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combinedvhost

Если вы измените его на это:

LogFormat "%v %{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combinedvhost

он должен это исправить.

Редактировать:

С тех пор я обнаружил, возможно, лучшее решение. Вместо того, чтобы работать с форматами журнала в файле httpd_server_app.conf,

если вы добавите / отредактируете это в файл httpd_server_app.conf:

<IfModule remoteip_module>
    RemoteIPHeader X-Forwarded-For
    RemoteIPInternalProxy 127.0.0.1
</IfModule>

Это добавит вышестоящий внутренний прокси-сервер в качестве надежного источника, который затем заполнит правильный адрес клиента в Remoteaddress. Все форматы журнала apache по умолчанию с затем показывают правильный адрес. Дополнительным преимуществом этого метода является то, что затем вы можете запустить mod_status (server-status), и он покажет правильный адрес клиента в своем отчете.