Запретить IP-адреса из текстового файла с помощью htaccess

Я читаю и понимаю, как заблокировать ip, используя htaccess:

order deny,allow deny from 111.222.33.44 deny from 55.66.77.88 ... allow from all 

Но мой список черных IP-адресов включает в себя тысячи IP-адресов. Я сохраняю все IP-адреса в файле blacklist.txt .

Могу ли я использовать htaccess для вызова blacklist.txt и блокировать все IP-адреса, которые хранятся в этом файле? Если да, то как?

Вы можете попробовать использовать варианты RewriteMap . Вам понадобится доступ к конфигурации server / vhost, потому что эта директива работает только там. Затем вы можете использовать карту внутри файлов htaccess.

Скажем, ваш файл blacklist.txt выглядит так:

 111.222.33.44 deny 55.66.77.88 deny 192.168.0.1 allow 

Вы можете определить карту следующим образом:

 RewriteEngine On RewriteMap access txt:/path/to/blacklist.txt 

Затем в вашем htaccess вы можете вызвать карту:

 RewriteEngine On RewriteCond ${access:%{REMOTE_ADDR}} deny [NC] RewriteRule ^ - [L,F] 

Условие вызывает карту и проверяет, соответствует ли удаленный адрес слову «deny», и если это так, правило перезаписи прямо запрещает доступ.

Если ваш blacklist.txt – это всего лишь список IP-адресов, и вы не хотите добавлять «deny» после каждого из них, вам нужно вызвать тип карты программы и написать сценарий примерно так:

 #!/bin/bash while true do read INPUT MATCH=`grep $INPUT /path/to/blacklist.txt` if [ -z "$MATCH" ]; then echo "allow" else echo "deny" fi done 

которые бесконечные петли считывают ввод и greps файл blacklist.txt . Если IP находится в файле, выведите «deny», иначе он выдает «allow». Затем вы создадите карту следующим образом:

 RewriteEngine On RewriteMap access prg:/path/to/blacklist.txt 

И правило перезаписи для проверки карты не будет отличаться.

Interesting Posts

Запись данных в CSV-файл в C #

Прокрутите RecyclerView, чтобы отобразить выбранный элемент сверху.

Почему моя скорость загрузки низкая, несмотря на 1 мегабайт чистой скорости

как загрузить представление в другое представление codeigniter 2.1?

Как изменить тип данных для столбца в MySQL?

В чем разница между кибибатом, килобитом и килобайтом?

Как получить текущую географическую широту и долготу в андроиде

Предупреждения о двойной ошибке указателя в C

Включить SSH на Mac в однопользовательском режиме

Как запретить обработчик командной строки командной строки оценивать короткие имена файлов

Почему я не могу повторить цикл «for» для csv.Reader?

Почему «fopen» возвращает указатель NULL?

Почему Chrome не может загружать веб-страницу? ERR_NAME_NOT_RESOLVED

Пакетные переменные Windows не будут установлены

Windows 7 заблокирована в учетной записи администратора, которая не имеет пароля

Давайте будем гением компьютера.