Заблокировать ботов для всех сайтов в nginx

12
lutskboy
На сайте с 22.11.2013
Offline
173
1145

Привет

есть код блокировки ботов

if ($http_user_agent ~* (Ahrefs|majestic|SemrushBot) ) {
            return 403;
        }

он работает если его добавить в конфиг конкретного сайта. я хотел бы ето сделать для всех сайтов на впс

в  nginx.conf в секции http прописал

    server {
        
        if ($http_user_agent ~* (Ahrefs|majestic|SemrushBot) ) {
            return 403;
        }
    }

но не работает

br.almighty
На сайте с 13.07.2021
Offline
62
#1
lutskboy :

в  nginx.conf в секции http прописал

Вы это правило прописали не в секции http, а в секции server.

lutskboy
На сайте с 22.11.2013
Offline
173
#2
br.almighty #:

Вы это правило прописали не в секции http, а в секции server.

если не в сервер. то пишет что "if" directive is not allowed here in /etc/nginx/nginx.conf

br.almighty
На сайте с 13.07.2021
Offline
62
#3
lutskboy #:

если не в сервер. то пишет что "if" directive is not allowed here in /etc/nginx/nginx.conf

Значит искать другое решение или подключать в каждом отдельном сайте. Можно через include, чтобы одно и то же поменьше писать.

LEOnidUKG
На сайте с 25.11.2006
Offline
1727
#4
Панель управления какая стоит? Там должна быть секция include для каждого сайта.
✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
lutskboy
На сайте с 22.11.2013
Offline
173
#5
LEOnidUKG #:
Панель управления какая стоит? Там должна быть секция include для каждого сайта.

fastpanel

LEOnidUKG
На сайте с 25.11.2006
Offline
1727
#6
lutskboy #:

fastpanel

В папку /etc/nginx/fastpanel2-includes

Файл закидывайте: block_bots.conf с содержанием:

if ($http_user_agent ~* (Amazonbot|proximic|Sogou|rogerbot|mj12bot|majestic|ahrefs|semrushbot|beekport|archiver|teleport|megaindex|baiduspider|linkpadbot|yahoo|msnbot|bingpreview|dotbot|uptimerobot|psbot|serpstatbot|gigabot|alphabot|aspiegelbot|xforce-security|semantic-visions|barkrowler|admantx|GetIntent|CriteoBot|BLEXBot|python-requests|PetalBot|seostar|zgrab|Go-http-client|CensysInspect|paloaltonetworks|SiteAnalyzerbot) ) {

return 444;

}

И перезагружайте nginx всё, больше ничего придумывать не надо.

lutskboy
На сайте с 22.11.2013
Offline
173
#7

только что глянул в логах. оказывается не помог Леня твой вариант. етот код нужно ставить выше вот етого. 

    location ~ \.php$ {
        include /etc/nginx/fastcgi_params;
        fastcgi_pass unix:/var/run/site.ru.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
     }

а фастпанель инклуд делает в самом низу. блокирует только если перейти допустим по /robots.txt а если сайт на php то не блокирует 

lutskboy
На сайте с 22.11.2013
Offline
173
#8

уточнение. работает если режим работы сайта как php+Apache

для php-fpm нет

Z
На сайте с 24.02.2021
Offline
24
#9
lutskboy :

Привет

есть код блокировки ботов

он работает если его добавить в конфиг конкретного сайта. я хотел бы ето сделать для всех сайтов на впс

в  nginx.conf в секции http прописал

но не работает

Всё просто:

1. создаете файл "черный список" .conf  и пишите туда, что хотите запретить.

2. к каждому сайту в sites-available вставляете в сервер


server {

include /etc/nginx/"черный список".conf;

return 301 https://бла-бла

}


lutskboy
На сайте с 22.11.2013
Offline
173
#10
zapravka #:

Всё просто:

1. создаете файл "черный список" .conf  и пишите туда, что хотите запретить.

2. к каждому сайту в sites-available вставляете в сервер


server {

include /etc/nginx/"черный список".conf;

return 301 https://бла-бла

}


про каждый сайт я и сам знаю. речь шла все в одном месте

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий