Защита от f5 и злостных ботов (шаблон для VestaCP)

Материал из Webko Wiki
Перейти к навигации Перейти к поиску

Данная настройка поможет защитить сервер от перегрузки путем обновления страниц и злостных индексирующих ботов. Так же является готовым шаблоном для VestaCP.

В основной конфиг Nginx в секцию http добавляем:

#Эта директива ограничивает количество запросов от одного клиента до 10 запросов в секунду
#!!! Попробовать проставить 5 вместо 10 запросов ещё сильнее ограничить нагрузку.
limit_req_zone $binary_remote_addr zone=lim:10m rate=10r/s;  

Дальше создаем новый шаблон для Nginx

vim /usr/local/vesta/data/templates/web/nginx/ho_burst_bot.tpl
server {
   listen      %ip%:%proxy_port%;
   server_name %domain_idn% %alias_idn%;
   if ($http_user_agent ~* (AhrefsBot|MJ12bot|dobot|BLEXBot) ) {
       return 403;
   }
   error_log  /var/log/httpd/domains/%domain%.error.log error;

   location / {
       limit_req zone=lim burst=10;
       proxy_pass      http://%ip%:%web_port%;
       location ~* ^.+\.(%proxy_extentions%)$ {
           root           %docroot%;
           access_log     /var/log/httpd/domains/%domain%.log combined;
           access_log     /var/log/httpd/domains/%domain%.bytes bytes;
           expires        max;
           try_files      $uri @fallback;
       }
   }

   location /error/ {
       alias   %home%/%user%/web/%domain%/document_errors/;
   }

   location @fallback {
       proxy_pass      http://%ip%:%web_port%;
   }

   location ~ /\.ht    {return 404;}
   location ~ /\.svn/  {return 404;}
   location ~ /\.git/  {return 404;}
   location ~ /\.hg/   {return 404;}
   location ~ /\.bzr/  {return 404;}

   disable_symlinks if_not_owner from=%docroot%;

   include %home%/%user%/conf/web/nginx.%domain%.conf*;
}

Или добавляем в готовый конфиг:

- от злостных ботов

server_name %domain_idn% %alias_idn%;
   if ($http_user_agent ~* (AhrefsBot|MJ12bot|dobot|BLEXBot) ) {
       return 403;
   }
   error_log  /var/log/httpd/domains/%domain%.error.log error;

- от f5

location / {
      limit_req zone=lim burst=10;
      proxy_pass      http://%ip%:%web_port%;