Я пытаюсь настроить .htaccess на Apache 2.4, используя Require ip X.X.X.X
Проблема, с которой я столкнулся, заключается в том, что все запросы, похоже, поступают с 127.0.0.1, а не с общедоступного IP-адреса запроса. При поиске в Интернете я обнаружил, что это, вероятно, связано с кешированием или проксированием на сервере.
Сервер OS X Server, когда мне запрещают на сервере, журнал показывает, что мой запрос пришел с 127.0.0.1, но я определенно не на локальном хосте. Имеет ли apache какое-либо проксирование такого рода, которое могло бы вызвать это?
Я нашел ответ:
- Отключите кеш производительности в 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), и он покажет правильный адрес клиента в своем отчете.