Гид по технологиям

Контроль частоты запросов Bingbot в nginx

• 5 min read • DevOps • Обновлено 26 Nov 2025
Ограничение Bingbot в nginx: robots.txt и limit_req
Ограничение Bingbot в nginx: robots.txt и limit_req

Предварительная заметка

В этой инструкции основное внимание уделено Bingbot, потому что он часто создаёт большое количество соединений при обходе сайта. Первое действие — настроить скорость обхода в Bing Webmaster Tools. Если у вас нет доступа к этим инструментам для всех виртуальных хостов или это не помогло, читайте далее.

Важно: Crawl-delay поддерживается Bingbot, но не Googlebot. Для Google следует применять другие методы.

Использование robots.txt

Bingbot понимает директиву Crawl-delay, поэтому вы можете добавить специальный раздел для него в robots.txt. Пример:

User-Agent: *
Disallow: /cache/
Disallow: /engine/
Disallow: /files/
Disallow: /templates/
Disallow: /uploads/
Disallow: /newsletter/
Disallow: /kontaktformular/
Disallow: /widerrufsrecht/
Disallow: /datenschutz-und-sicherheit
Disallow: /agb/
Disallow: /shopware.php/sViewport,admin
Disallow: /shopware.php/sViewport,note
Disallow: /shopware.php/sViewport,basket
Disallow: /shopware.php/sViewport,rma
Disallow: /shopware.php/sViewport,support
Disallow: /shopware.php/sViewport,ticket
Disallow: /shopware.php/sViewport,newsletter
Disallow: /shopware.php/sViewport,tellafriend
Sitemap: http://www.example.com/sitemap.xml

User-Agent: bingbot
Crawl-delay: 1
Disallow: /cache/
Disallow: /engine/
Disallow: /files/
Disallow: /templates/
Disallow: /uploads/
Disallow: /newsletter/
Disallow: /kontaktformular/
Disallow: /widerrufsrecht/
Disallow: /datenschutz-und-sicherheit
Disallow: /agb/
Disallow: /shopware.php/sViewport,admin
Disallow: /shopware.php/sViewport,note
Disallow: /shopware.php/sViewport,basket
Disallow: /shopware.php/sViewport,rma
Disallow: /shopware.php/sViewport,support
Disallow: /shopware.php/sViewport,ticket
Disallow: /shopware.php/sViewport,newsletter
Disallow: /shopware.php/sViewport,tellafriend
Sitemap: http://www.example.com/sitemap.xml

Пояснение:

  • Если вы добавляете секцию для bingbot, директивы User-Agent: * не применяются к нему автоматически — повторите нужные Allow/Disallow.
  • Crawl-delay: 1 указывает боту выдерживать паузу в примерно 1 секунду между запросами (поведение может варьироваться по реализации бота).

Важно: robots.txt — добровольный механизм; злонамеренные или неправильно настроенные боты его игнорируют.

Использование nginx для контроля подключений бота

Если robots.txt недостаточно, примените контроль на уровне nginx. Мы используем модуль geo для распознавания подсетей бота и limit_req для ограничения скорости запросов.

Откройте конфигурационный файл nginx:

vi /etc/nginx/nginx.conf

Добавьте в контейнер http {} (перед включением конфигураций vhost):

[...]
geo $isabot {
        default 0;
        #bingbot
        157.55.32.0/24 1;
        157.56.229.0/24 1;
        157.56.93.0/24 1;
        157.55.33.0/24 1;
}
map $isabot $limited_ip_key {
    0 '';
    1 $binary_remote_addr;
}
limit_req_zone $limited_ip_key zone=isabot:5m rate=2r/s;
limit_req zone=isabot burst=200;
[...]

Пояснение параметров:

  • geo — помечает запросы из указанных подсетей как бот (isabot = 1). Добавляйте или обновляйте подсети по мере необходимости.
  • map — формирует ключ для лимитирования: пустая строка для обычных посетителей (без ограничений), бинарный IP для ботов.
  • limit_req_zone — создаёт зону с именем isabot объёмом 5 минут кеша и скоростью 2r/s (2 запроса в секунду).
  • limit_req — применяет зону и допускает burst=200 — это значит, что избыточные запросы будут буферизованы в очереди до 200 «всплесков», после чего nginx начнёт отдавать 503.

Практическая интерпретация: Bingbot будет допущен в среднем к ~2 запросам/с, кратковременные пики будут отложены в буфере до 200 запросов; при переполнении буфера последующие запросы будут получать 503.

Не забудьте перезагрузить nginx после изменений:

/etc/init.d/nginx reload

Когда это не сработает

  • Если бот поддельно маскирует свои IP (использует прокси) — geo по IP не поймает такой трафик.
  • Если бот не соблюдает robots.txt — директивы не применяются.
  • При распределённой атаке с множества IP (или CDN) простая geo/limit_req может быть недостаточна.

Альтернативные подходы

  1. Rate limiting по User-Agent в upstream или в firewall (iptables, nftables) — полезно, если бот идентифицирует себя явно.
  2. Использовать WAF (Web Application Firewall) с динамическим ограничением частоты и автоматическим блокированием аномалий.
  3. Проксирование запросов через CDN с функционалом rate limiting и бот-менеджментом (например, правила в CDN для ограничения пауков).
  4. Перевести важные vhost-ы на отдельные узлы/контейнеры, чтобы снизить влияние на остальные сайты.

Мини-методология для админа (быстрая последовательность)

  1. Проверка логов: определите IP-подсети и паттерны запросов (User-Agent, частота).
  2. Настройка Crawl-delay в Bing Webmaster Tools (при доступе).
  3. Добавить секцию в robots.txt для bingbot с Crawl-delay и нужными Disallow.
  4. В nginx: добавить подсети в geo, настроить limit_req_zone и limit_req с небольшим rate и разумным burst.
  5. Мониторинг в течение 24–72 часов: метрики CPU, load, количество соединений, частота 503.
  6. Корректировка подсетей и параметров rate/burst по результатам наблюдений.

Чек-лист для роли администратора

  • Определил подсети Bingbot в логах
  • Настроил Crawl-delay в Bing Webmaster Tools (если есть доступ)
  • Добавил секцию User-Agent: bingbot в robots.txt
  • Обновил /etc/nginx/nginx.conf (geo, map, limit_req_zone, limit_req)
  • Перезагрузил nginx и проверил конфигурацию на синтаксис
  • Наблюдаю метрики и корректирую параметры

Критерии приёмки

  • Средняя нагрузка CPU/Load уменьшилась до целевого уровня
  • Количество параллельных соединений от Bingbot стабильно и предсказуемо
  • Нет значительного увеличения законных 503 для пользователей
  • Логи показывают соблюдение ограничений bot-пауком

Пара случаев и рекомендации безопасности

  • Не блокируйте полностью поисковые боты, если вам важна их индексация. Вместо этого ограничьте скорость.
  • Обновляйте список IP-подсетей бота — поставщики меняют адреса.
  • Следите за ложными позитивами: иногда прокси и пользователи из тех же подсетей могут попасть под правило.

Mermaid: простое дерево решений

flowchart TD
  A[Высокая нагрузка от бота] --> B{Идентичен ли User-Agent?}
  B -->|Да| C[Проверить подсети в логах]
  B -->|Нет| D[Использовать WAF/CDN/Firewall]
  C --> E{Есть доступ в Bing Webmaster Tools?}
  E -->|Да| F[Ограничить Crawl-rate в Bing]
  E -->|Нет| G[Добавить Crawl-delay в robots.txt и nginx limit_req]
  D --> H[Внедрить WAF/CDN или правила firewall]

Часто задаваемые вопросы

Q: Работает ли это с Googlebot? A: Googlebot не поддерживает Crawl-delay в robots.txt. Для Google используйте Google Search Console для управления скоростью обхода или применяйте серверные лимиты (limit_req) и WAF.

Q: Что произойдёт с легитимными посетителями из тех же подсетей? A: Если вы ограничиваете по IP-подсетям, есть риск затронуть реальных пользователей, если они шли через те же подсети. Тщательно анализируйте логи перед применением.

Q: Как быстро применять изменения? A: После правки nginx конфигурации выполняйте /etc/init.d/nginx reload. Наблюдайте минимум 24–72 часа для оценки эффекта.

Ресурсы

Резюме: сочетание корректно настроенного robots.txt и серверных лимитов в nginx даёт гибкий, контролируемый способ снизить нагрузку от поисковых ботов без полного блокирования индексации.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро