У меня есть в остальном благополучно работающий сервер на Ubuntu 14.04. Я пытаюсь ограничить доступ к файлу с помощью блока разрешения / запрета:
<Files "login.php">
order deny,allow
deny from all
allow from 22.123.123.12
</Files>
Это успешно запрещает всем пользователям и сообщает им: «Запрещено. У вас нет разрешения на доступ ...». Если я удалю строку «запретить всем», это позволит мне просмотреть экран входа в систему.
Но независимо от того, что я делаю и отлаживаю, я не могу заставить его просматривать этот файл, когда я использую этот IP-адрес. Оператор «разрешить», кажется, никогда не работает.
Некоторая отладка уже пробовала:
AllowOverride All
в конфигурацию моего хоста, чтобы убедиться, что сам файл / модуль авторизации работает.Другая, возможно, важная информация:
Я начинаю подозревать, что по какой-то причине сервер не думает, что я нахожусь на этом IP-адресе, но не могу понять, как это могло быть. Любые идеи?
Благодаря комментарию @ ChrisLam я понял, что IP-адрес, отображаемый в журналах доступа, не совпадает с моим текущим IP.
Этот IP, 108.162.225.167, похоже, соответствует серверам CloudFlare.com, которые мы используем для ускорения работы сайта.
Хотя было установлено правило не кэшировать эту страницу, IP-адреса запросов все еще не передавались обратно на сервер. CloudFlare говорят, что:
«Поскольку CloudFlare действует как прокси, вы заметите изменения в способе отображения IP-адресов посетителей вашего веб-сайта как в журналах вашего сервера, так и в веб-приложениях - в частности, что весь доступ, по-видимому, идет с IP-адресов CloudFlare».
Установка CloudFlare's mod_cloudflare
модуль для Apache httpd позволяет передавать эти IP-адреса обратно на сервер и отлично решает мою проблему.
Скачать и информацию можно на сайте CloudFlare: https://www.cloudflare.com/resources-downloads#mod_cloudflare