Nginx Ultimate Bad Bot Blocker от Митчелла Крога это набор конфигов и скриптов для Nginx, который отсекает плохих ботов, спам в заголовке Referer, сканеры уязвимостей, поддельных Googlebot и подозрительные IP. Проект живой: на 8 октября 2026 года свежая версия V4.2026.10.6183, списки обновляются почти каждый день, у репозитория около 4,8 тысячи звёзд.
Это не замена CDN и WAF, а слой на самом сервере. Мусорный запрос отбивается ещё в Nginx и не доходит до PHP-FPM, Node и базы. Для сайта на VPS это меньше шума в логах и меньше лишней нагрузки.
Что блокирует: 7116 рефереров, 700 User-Agent, 218 поддельных Googlebot
- Плохие боты: спамеры форм и комментариев, сканеры по wp-login, .env и phpMyAdmin, агрессивные SEO-краулеры и скраперы.
- Referrer spam: запросы с поддельным Referer, которые засоряют аналитику и логи. По README в списках 7116 таких доменов.
- Поддельные поисковики: клиенты, которые представляются Googlebot, но приходят не из сетей Google. Их в списке 218.
- Плохие IP и диапазоны, плюс встроенные лимиты запросов для ботов, которых не хочется банить совсем.
Совпавший запрос получает код 444: Nginx просто закрывает соединение без ответа, и для бота сервер выглядит выключенным. Свои IP и домены добавляются в белые списки whitelist-ips.conf и whitelist-domains.conf, а Google, Bing и другие нормальные поисковики пропускаются по умолчанию.
Установка через install-ngxblocker и setup-ngxblocker
Перед правками сделайте бэкап /etc/nginx. Сначала скачиваем установщик:
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
Каждый скрипт по умолчанию работает вхолостую и только показывает, что сделает. Реальные изменения идут с ключом -x. Установщик кладёт конфиги в /etc/nginx/conf.d и /etc/nginx/bots.d и скачивает ещё два скрипта, setup-ngxblocker и update-ngxblocker:
cd /usr/local/sbin sudo ./install-ngxblocker sudo ./install-ngxblocker -x sudo chmod +x /usr/local/sbin/setup-ngxblocker /usr/local/sbin/update-ngxblocker
Дальше setup-ngxblocker прописывает include в nginx.conf и в конфиги сайтов и добавляет ваш IP в белый список. Он ищет конфиги в /etc/nginx/sites-available с расширением .vhost. Если у вас файлы на .conf, расширение задаётся ключом -e:
sudo ./setup-ngxblocker -e conf sudo ./setup-ngxblocker -x -e conf
В каждом server-блоке сайта в итоге появляются две строки:
include /etc/nginx/bots.d/ddos.conf; include /etc/nginx/bots.d/blockbots.conf;
Если Nginx собран с нестандартными путями, у всех трёх скриптов есть ключи -c и -b для каталогов conf.d и bots.d, а полный список опций выводит --help. Для ручной настройки есть отдельная инструкция. Проверяем конфиг и перезагружаем Nginx:
sudo nginx -t && sudo nginx -s reload
Как проверить, что блокировщик работает
Проверять нужно с другой машины, подставив свой домен. Нормальные поисковики должны получить 200:
curl -A "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" -I https://example.com
А плохой бот и спам-реферер должны получить обрыв соединения: curl покажет «Empty reply from server», «Connection reset by peer» или ошибку HTTP/2:
curl -A "Xenu Link Sleuth/1.3.8" -I https://example.com curl -I https://example.com -e http://100dollars-seo.com
Если сайт за Cloudflare или другим CDN, на время теста CDN лучше отключить. Иначе CDN закэширует первый обрыв и на повторный запрос отдаст ошибку 520, и по такому ответу сложно понять, что происходит на самом сервере.
Обновление списков по cron
Списки устаревают быстро, поэтому обновление ставим в crontab root (sudo crontab -e). Ключ -e присылает отчёт на почту, -n отключает письма:
00 22 * * * /usr/local/sbin/update-ngxblocker -e admin@example.com
В репозитории есть ещё фильтр и jail для Fail2Ban: он смотрит в логах, кто набирает много ответов 444, и банит повторных нарушителей уже на файрволе. Для Apache есть отдельный проект, Apache Ultimate Bad Bot Blocker.
WordOps: включается одним ключом
Если сайты подняты на WordOps, блокировщик встроен в стек. По документации WordOps он включается при создании сайта ключом --ngxblocker, а на существующем сайте через wo site update с тем же ключом. Выключается --ngxblocker=off.
wo site create example.com --wp --ngxblocker wo site update example.com --ngxblocker wo site update example.com --ngxblocker=off
Чего от него не ждать
Лимиты и отсечение известных ботов помогают против мелкого флуда и сканеров. Объёмный DDoS на уровне сети или большой L7-флуд решаются у хостера, в CDN или WAF. Дырявое приложение блокировщик тоже не спасёт: нужны обновления, нормальные limit_req, Fail2Ban или CrowdSec. Бонус после настройки обычно скромный, но заметный: меньше сканов в логах, ниже фоновая нагрузка на PHP-FPM и чище аналитика.
В итоге Ultimate Bad Bot Blocker это бесплатный и живой проект, который быстро ставится на обычный Nginx: три скрипта, две строки include в сайте и обновление списков по cron. Он хорошо дополняет CDN и WAF, но не заменяет их.
Источники и ссылки
--ngxblocker для wo site create и wo site update.
Nginx: модуль limit_req
Ограничение частоты запросов на стороне Nginx.
Apache Ultimate Bad Bot Blocker
Тот же блокировщик для Apache.