Блокировка IP адресов.
Mod_rewrite можно использовать для блокировки IP адресов. Отметим, что существуют более эффективные средства борьбы с надоедливыми IP адресами: фаерволы, директивы Deny и специальные модули. Рассмотрим как можно решить эту проблему с помощью mod_rewrite. Создаем тектовый файл /path/blacklist.txt, следующего вида:
1.1.1.1 b 2.2.2.2 b
Пример отправки кода 403 для указанного списка IP адресов:
Rewritemap ip txt:/path/blacklist.txt RewriteCond ${ip:%{REMOTE_ADDR}} =b RewriteRule .* - [F]
Примечание к примеру:
- Rewritemap ip txt:/path/blacklist.txt
Указание массива IP адресов - RewriteCond ${ipmap:%{REMOTE_ADDR}}=b
Проверка наличия адреса в списке запрещенных - RewriteRule .* - [F]
Послать код 403 (forbidden) для всех запросов
Пример редиректа на страницу /error.html для указанного списка IP адресов:
Rewritemap ip txt:/path/blacklist.txt RewriteCond ${ip:%{REMOTE_ADDR}} =b RewriteCond %{request_uri} !=/error.html RewriteRule .* /error.html [R,L]
Примечание к примеру:
- Rewritemap ip txt:/path/blacklist.txt
Указание массива IP адресов - RewriteCond ${ipmap:%{REMOTE_ADDR}}=b
Проверка наличия адреса в списке запрещенных - RewriteCond %{request_uri} !=/error.html
Если запрошенный адрес не /error.html - RewriteRule .* /error.html [R,L]
Перенаправить на /error.html. [R,L] - редирект, последнее правило
Для текстового файла и DBM файлов ключи поиска кэшируются ядром до тех пор пока не изменится mtime файла с массивом или пока не произойдет рестарт сервера. Таким образом, вы можете использовать достаточно большие ассоциативные массивы, потому что внешний поиск происходит только один раз.
08.01.2007