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

«Требовать не ip» .htaccess не работает на одном ip

У меня проблемы с блокировкой IP-адреса в .htaccess

Я положил

Require not ip 192.168.20.218

Он работает, но блокирует всю сеть вместо блокировки одного IP.

Может кто-нибудь решить эту проблему?

Я работаю на Apache 2.4, используя Ubuntu 14.04.3 LTS

ОБНОВИТЬ: сценарий такой, я использую IP 192.168.20.218 на моем компьютере я пытаюсь выполнить тест, чтобы заблокировать этот IP-адрес, я пробовал:

<RequireAll> 
Require all granted 
Require not ip 192.168.20.218 
</RequireAll>

Предполагается, что это заблокирует мой доступ, но вместо этого все еще позволяет мне получить доступ к странице. Если я вытащу Require all granted он блокирует всю сеть.

Вы не можете использовать отрицается Сама по себе директива для авторизации доступа. Как отмечено в документация:

Результат Require директива может быть отменена с помощью not вариант. Как и в случае с другой отрицательной директивой авторизации <RequireNone>, когда Require директива инвертирована, она может только завершиться ошибкой или вернуть нейтральный результат и, следовательно, никогда не может независимо авторизовать запрос.

Вместо этого вам нужно будет сделать что-то вроде следующего:

<RequireAll>
Require all granted
Require not ip 192.168.20.218
</RequireAll>

Таким образом, вы разрешаете всем и исключаете определенный IP-адрес.

В <RequireAll> container, как следует из его названия, требует, чтобы все содержащиеся в нем директивы были выполнены.

У меня была такая проблема. Я забыл, что у меня есть обратный прокси-сервер nginx. IP-адрес, поступающий в apache, был IP-адресом обратного прокси от nginx. Вместо этого мне пришлось установить собственный заголовок в обратном прокси-сервере, содержащий истинный IP-адрес, а затем проверить этот заголовок в .htaccess вместо проверки IP-адреса.