Клиент обратился к нам с проблемой медленной работы сайта и его периодической недоступностью. Так как это интернет-магазин, то он нёс большие убытки и от стабильной работы ресурса зависел весь его бизнес.
Клиент использует bitrixVM (centos) и решение CMS Битрикс + CRM Битрикс24 на борту.
В ходе диагностики выяснилось, что сайт имеет множество поддоменов и по стратегии SEO специалиста каждый поддомен заведен как отдельный сайт под нужный регион. Следовательно боты Яндекса расценивают их отдельными сайтами и даже достаточно мощный сервер не справляется с этой нагрузкой. Чтобы это увидеть можно посмотреть access.log httpd сервера bitrix vm.
Алгоритм решения проблемы
Будем использовать стандартный функционал битрикс и отправлять по документации Яндекса 429 ошибку. https://yandex.ru/support/webmaster/robot-workings/load-robots.html
1.
Для начала проверим, установлен ли модуль веб - аналитики.
Заходим в настройки => Настройки продукта => Модули
Если он установлен, приступаем к следующему шагу, если нет – устанавливаем.
2.
Переходим Настройка => Проактивная защита => Контроль активности
3.
Включаем защиту и переходим на вкладку параметры.
4.
Нужно отредактировать шаблон, чтобы отправлять заблокированным роботам 429 код.
<?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();?>
<?CHTTP::SetStatus("429 Too Many Requests");?>
<html>
<head>
<title>429 Too Many Requests</title>
</head>
<body>
<h1>429 Too Many Requests</h1>
You have made too many requests per second.
</body></html>
<?die();?>
5.
Ограничения подбираем исходя из разумности создания хитов. То есть смотрим, сколько создает человек хитов за какой-то небольшой срез времени и ставим приблизительные ограничения. Или оставляем стандартные значения.
Посмотреть создание хитов можно в веб аналитике Аналитика => Кто на сайте.
6.
Если вы используете постоянный обмен данными между 1С, обязательно добавьте IP сервера, с которого отправляются пакеты в исключения, иначе он будет забанен.
Настройки => Настройка продукта => настройки модулей => Веб - аналитика
7.
Можно добавить исключения как по IP, так и по группам пользователей. Как правило если решение для обмена типовое, то используется админ. группа.
Вот так была решена проблема назойливости ботов и сайт клиента перестал падать. Также этот приём спасёт от не сложных ddos-атак.
Остались вопросы? Пишите в комментариях.