Настройка Nginx/Apache для фильтрации трафика: как не сломать живых и отрезать мусор
Фильтрация на веб-сервере — это не «бан по IP», а проверка цепочки прохождения запроса. Анализ логов показывает: половина мусора палится уже на уровне заголовков, пути и таймингов, до PHP и backend-логики он не доезжает.
В Nginx рабочая схема строится на нескольких правилах:
— сверяете User-Agent, referer и host;
— режете пустой или кривой referer там, где он обязателен;
— закрываете прямой доступ к служебным URL через allow/deny;
— отдаёте 403/444 без лишнего ответа, если трафик явно не ваш.
Для Apache логика та же, только через mod_rewrite, mod_setenvif и условия по headers.
Не пытайтесь фильтровать всё одним regex. Это классическая ошибка: один неверный паттерн — и у вас в бан уезжает нормальный браузер, а ботовый мусор проходит через запасной путь. Делайте каскад: сначала грубая отсечка по IP/ASN и URI, потом по заголовкам, потом по поведению. Так уменьшается ложноположительная фильтрация и проще читать access.log.
Проверка цепочки прохождения запроса обязательна: curl с подменой headers, тест через прокси, отдельный лог на deny-ветке, контроль кода ответа и размера body. Если конфиг готов, но в логах нет внятной картины, значит фильтрация у вас не работает, а имитирует безопасность.
Держите правила короткими, логи — раздельными, а исключения — явно прописанными. Конфиг готов, можно деплоить, когда вы видите не только блок, но и причину блока.
Клоакинг: разборы
@cloaking_lab_arb
Настройка Nginx/Apache для фильтрации трафика: как не сломать живых и отрезать мусор
Этот пост опубликован в Telegram-канале Клоакинг: разборы. Подписаться можно по ссылке: @cloaking_lab_arb.