Ответить в теме

[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]

Сверху