Невозможно разрешить / запретить доступ к IP-адресам
В Ubuntu 14.04 у меня есть хорошо работающий сервер. Я пытаюсь ограничить доступ к файлу с помощью блока allow/deny:
<Files "login.php">
order deny,allow
deny from all
allow from 22.123.123.12
</Files>
Это успешно запрещает всем пользователям и говорит им "Запрещено. У вас нет прав доступа...". Если я уберу строку "Запретить все", это позволит мне просмотреть экран входа в систему.
Но независимо от того, что я делаю и отлаживаю, я не могу заставить его просмотреть этот файл, когда я использую этот IP-адрес. Кажется, что утверждение "allow" никогда не работает.
Некоторая отладка уже пробовала:
- Я пытался добавить
AllowOverride All
в моей конфигурации хоста, чтобы убедиться, что сам файл / модуль авторизации работал. - Я пробовал кучу других утверждений разрешить / запретить
- Этот оператор в настоящее время находится в файле.htaccess, но я попытался переместить его в конфигурацию хоста, которая также не работает.
Другая, возможно, актуальная информация:
- Я использовал немного PHP для вывода своего IP на веб-странице: он успешно распознан как 22.123.123.12.
- Я использую SSL для веб-страницы, поэтому я обращаюсь к файлу по адресу https://example.com/login.php. Не уверен, что это повлияет на вещи.
Я начинаю подозревать, что по какой-то причине сервер не считает, что я нахожусь по этому IP-адресу, но не могу понять, как это было бы. Есть идеи?
1 ответ
Благодаря комментарию @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