[QUOTE="stmx, post: 10081, member: 4642"]
Как заблокировать список IP для определенного сайта на веб-сервере NGINX? (наиболее быстрый способ блокировки)
Создаем файлы
/etc/nginx/bad.conf - параметры блокировок
/etc/nginx/ip_list.conf - список IP в таком формате:
[CODE]
217.107.209.0/24 1;
217.107.45.1 1;
217.107.45.2 1;
217.107.45.3 1;
[/CODE]
Добавляем в nginx.conf строки:
[CODE=perl]
geo $bad {
default 0;
include /etc/nginx/ip_list.conf;
}
[/CODE]
Открываем /etc/nginx/bad.conf
[CODE=perl]
if ($bad) {
return 403;
}
if ($http_user_agent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36"){
rewrite ^ /default.html;
}
# то что ниже, это юзер агенты которые желательно заблокировать на любом сервере
if ($http_user_agent ~* ".*Wget.*"){
return 444;
}
if ($http_user_agent ~* ".*curl.*"){
return 444;
}
if ($http_user_agent ~* ".*python-requests.*"){
return 444;
}
[/CODE]
return - возвращает любой указанный код ответа HTTP
$http_user_agent - перенаправляет любой user-agent, либо можно также отдавать код HTTP как в примере выше
и последнее - добавляем в настройки сайта, который нужно защитить:
[CODE=perl]server {
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/vhost-error_log warn;
listen 80;
listen 443;
server_name sait.ru www.sait.ru;
include /etc/nginx/bad.conf;
location / {
<...>
}
}[/CODE]
[/QUOTE]