Перейти к основному контенту

Как снизить число запросов, ограничив доступ роботам на VPS

Индексация сайта — важный элемент продвижения в поисковых системах. Индексируются сайты с помощью поисковых роботов (ботов), которые обращаются ко всем страницам ресурса и тем самым создают нагрузку на сервер.

Кроме поисковых роботов существуют спам-боты, которые публикуют спам на сайте или собирают открытые данные (напр. e-mail`ы пользователей) для спам-рассылки. Чем популярнее ваш сайт, тем больше поисковых ботов его посещают.

Есть несколько способов как снизить нагрузку от поисковых ботов:

С помощью файла robots.txt

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

С помощью тега robots

Тег robots управляет индексацией конкретной страницы. Данный тег необходимо добавить в разметку самой страницы с необходимыми параметрами:

страница индексируется, робот идёт по ссылкам с этой страницы:
<meta name="robots" content="index, follow"/>
страница не индексируется, но робот идет дальше по ссылкам.
<meta name="robots" content="noindex, follow"/>
страница индексируется, но робот не идёт по ссылкам на другие страницы, т.е. он их не индексирует.
<meta name="robots" content="index, nofollow"/>
страница не индексируется, робот по ссылкам не идёт. Если поместить такой код на все страницы сайта, он не проиндексируется.
<meta name="robots" content="noindex, nofollow"/>

С помощью .htaccess или nginx

Если ваш сервер работает в связке apache + nginx, рекомендуем использовать блокировку через htaccess. Для сервера, который использует nginx + php-fpm, блокировку необходимо произвести с помощью nginx. Чтобы настроить блокировку с помощью .htaccess или nginx, необходимо выяснить *User-Agent`ов*, которые создают нагрузку на сервер. Преимущества .htaccess и nginx в том, что блокировка происходит на уровне сервера и данное ограничение срабатывает во всех случаях, в отличии от robots.txt, который многие роботы игнорируют.

Получить список запросов можно с помощью скрипта, который отсортирует их, начиная с самых частых:

cat /var/www/httpd-logs/faq-reg.ru.access.log |/usr/bin/awk {'print $12'} | sort -n | uniq -c | sort -rn | head -20 — выводит список *User-Agent`ов* по названию.

cat /var/www/httpd-logs/faq-reg.ru.access.log |/usr/bin/awk {'print $1'} | sort -n | uniq -c | sort -rn | head -20- выводит список IP-адресов, с которых поступают запросы.

Где faq-reg.ru.access.log названия вашего файла с логами.

Внимание!
Расположение логов зависит от настроек вашего сервера. Для пользователей с панелью управления ISPmanager файлы располагаются в директории: /var/www/httpd-logs/

Блокировка через .htaccess

Для блокировки с помощью .htaccess необходимо добавить правила в файл. В случае отсутствия вы также можете создать его, воспользовавшись инструкцией: У меня нет файла .htaccess, что делать.

Для каждого бота, который необходимо заблокировать, добавьте в файле .htaccess строки:

SetEnvIfNoCase User-Agent "^Name_of_bot_1" bad_bot

SetEnvIfNoCase User-Agent "^Name_of_bot_2" bad_bot

<Limit GET POST HEAD> 
Order Allow,Deny 
Allow from all
Deny from env=bad_bot
Deny from 123.123.123.123
</Limit>

где на место Name_of_bot_1 и Name_of_bot_2 подставлены названия User-Agent`ов, а для блокировки по IP-адресу, в строке *Deny from 123.123.123.123*, указан нужный IP.

Сохраните изменения.

Блокировка через nginx

Для блокировки с помощью nginx необходимо добавить правила в файл конфигурации виртуального хоста faq-reg.ru.conf, где faq-reg.ru — имя вашего домена.

Внимание!
Расположение файла конфигурации зависит от настройки вашего сервера. Если у вас заказана панель управления ISPmanager, конфигурационные файлы находятся в директории: /etc/nginx/vhosts/username/

Данные правила можно добавить в любую часть конфигурационного файла начиная с http {}. Добавьте в файл конфигурации следующие строки:

if ($http_user_agent ~* (AhrefsBot|majestic) ) {

    return 403;
}

где AhrefsBot|majestic названия User-Agent`ов.

Чтобы заблокировать определенный IP-адрес, необходимо добавить:

deny 123.123.123.123;

Где 123.123.123.123 — IP-адрес блокируемого хоста.

Для блокировки локальных IP-адресов:

location / {
  # блокировка одного локального адреса
  deny    192.168.1.1;
  # блокировка всех адресов подсети 192.168.1.0/24
  allow   192.168.1.0/24;
  # блокировка всех IP адресов
  deny    all;
}
Была ли эта статья полезной?
Пользователи, считающие этот материал полезным: 0 из 0