nginx-ultimate-bad-bot-blocker – набор include-файлов и скриптов для Nginx: чёрные списки User-Agent, referrer spam, подозрительные IP и простые rate-limit сценарии. Не замена CDN/WAF, но на самом сервере срезает мусорный трафик до приложения.
От чего защищает
Плохие боты
Автоматизированные клиенты, которые не нужны сайту:
- спам-боты (регистрации, комментарии, формы);
- сканеры уязвимостей и «широкие» краулеры по wp-login, .env, phpmyadmin;
- перебор паролей и credential stuffing по admin-путям;
- поддельные Googlebot и прочие «уважаемые» UA без реальной проверки.
Referrer spam
Поддельный заголовок Referer, чтобы засветиться в аналитике или дёрнуть сервер. Статистика «плывёт», в access.log шум, иногда лишняя нагрузка на динамику.
DDoS: реалистичные ожидания
Лимиты запросов и отсечение известных ботов помогают против «мелкого» flood и сканеров. Полноценный объёмный DDoS (L3/L4 или огромный L7) решается на сети, у хостера или через CDN/WAF. Блокировщик – слой на origin, не серебряная пуля.
Почему именно на Nginx
Nginx хорошо держит много соединений и отдаёт статику. Блокировку по UA/IP/referer и limit_req удобно вешать на edge-конфиг: плохой клиент не доходит до PHP/Node и БД. Плюс конфиги декларативные – проще версионировать и обновлять списки скриптом.
Что умеет Ultimate Bad Bot Blocker
Проект mitchellkrogza/nginx-ultimate-bad-bot-blocker поставляет актуальные списки bad bots / bad referers, include-фрагменты для conf.d и conf.d/bots.d, скрипты установки и обновления. В описании проекта фигурируют тысячи записей по referer и сотни User-Agent (в т.ч. fake crawlers) – точные цифры меняются с обновлениями, смотрите README репозитория.
Установка (базовый сценарий)
Перед правками – бэкап конфигов Nginx. Пути зависят от дистрибутива (/etc/nginx vs layout WordOps/EasyEngine). Ниже типичный bootstrap из официального install-скрипта:
sudo wget https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/install-ngxblocker \ -O /usr/local/sbin/install-ngxblocker sudo chmod +x /usr/local/sbin/install-ngxblocker sudo /usr/local/sbin/install-ngxblocker -x
Скрипт кладёт include-файлы и подсказки, куда вписать директивы. Дальше обычно:
- подключить глобальные include в
nginx.conf/http {}(как указано в README после установки); - в server-блоке сайта включить bot blocker includes;
nginx -tи reload;- настроить
update-ngxblockerпо cron, чтобы списки не протухали.
Актуальные флаги и пути – только из README репозитория: дистрибутивы и кастомные layout (WordOps, Plesk, ручной multi-site) отличаются.
Как это устроено технически
В ход идут стандартные возможности Nginx: map/if по $http_user_agent и referer, ngx_http_access_module, limit_req / limit_conn, иногда закрытие соединения кодом 444 (Nginx «закрыть без ответа»). Упрощённый ручной пример идеи (сам blocker даёт готовые include, их не обязательно писать с нуля):
if ($http_user_agent ~* (BadBot|EvilScraper)) {
return 403;
}
В боевом наборе правила сложнее: whitelist хороших ботов, отдельные списки, rate limit. Не копируйте куски вслепую поверх уже установленных include – получите дубли и сюрпризы.
Проверка
После reload можно дёрнуть сайт с заведомо «плохим» User-Agent:
curl -I -A "BadBot" https://yourdomain.com
Ожидаемый ответ зависит от политики в ваших include: часто 403 или 444 (соединение рвётся, curl покажет ошибку). Смотрите access/error log и то, что реально прописано в conf.d/bots.d. Параллельно проверьте нормальный браузерный UA и известных краулеров из whitelist – Googlebot резать нельзя.
Эффект на практике
Типичный результат после адекватной настройки: меньше сканов в логах, ниже фоновая нагрузка на PHP-FPM, чище отчёты аналитики без referrer spam. Это не маркетинг-кейс «сайт ускорился в 10 раз», а снижение шума. Если приложение само дырявое, одних UA-фильтров мало – нужен патчинг, WAF, fail2ban/CSF, нормальные лимиты.
Альтернативы и дополнения
- Cloudflare / аналог CDN+WAF – фильтр на edge, bot fight, rate limit до origin. Блокировщик на Nginx хорошо дополняет, если origin всё равно торчит или CDN нет.
- fail2ban, crowdsec, ModSecurity – другие слои: бан по логам, сигнатуры WAF.
- WordOps – стек с Nginx; в экосистеме есть поддержка/установка bot blocker. Команды стека: документация WordOps stack, сайт проекта wordops.net.
Короткий FAQ
Что такое Nginx? Веб-сервер и reverse proxy. Часто стоит перед PHP-FPM, Node, статикой.
Кто такие «плохие» боты? Автоматика, которая вредит или шумит: спам, сканы, брутфорс, fake crawlers. Не путать с легитимными поисковиками и мониторингом.
Как блокировать на Nginx? Списки UA/IP/referer + limit_req, либо готовый пакет вроде Ultimate Bad Bot Blocker, плюс обновление списков и тест whitelist.
Итог
Ultimate Bad Bot Blocker – практичный слой защиты origin на Nginx: режет известный мусор, referrer spam и часть агрессивных сканеров. Ставьте с бэкапом конфигов, подключайте include по README, обновляйте списки, проверяйте легитимных ботов. Для серьёзного DDoS и application-атак комбинируйте с CDN/WAF и hardening приложения.

