Блокирование определенных пользовательских агентов по всему миру
Раньше я управлял всеми своими веб-серверами вручную через nginx.
Сейчас я использую cPanel и хотел бы заблокировать доступ определенных веб-агентов к любому веб-сайту на моем сервере.
Вот как это было легко в nginx.
if ($http_user_agent ~* "PHP|curl|Wget|HTTrack|Nmap|Verifying|PingBack|Pingdom|Joomla|Wordpress") { return 444; }
if ($http_user_agent = "") { return 444; }
if ($http_user_agent = " ") { return 444; }
if ($http_user_agent = "-") { return 444; }
Как мне повторить тот же эффект для всех моих сайтов, включая основной веб-сервер для WHM (apache).
Похоже на простой запрос, но документации по этому вопросу почти нет.
1 ответ
Если вы используете map для установки переменной $drop_agent на уровне http, она будет доступна для всех ваших серверов. Пользовательский агент совпадений также может быть помещен во включенный файл.
map $http_user_agent $drop_agent {
default 0;
~^libwww-perl$ 1;
}
Затем в каждом разделе сервера:
if ($drop_agent) {
# return 403; # for testing
return 444;
}