Nginx Блокируем доступ Ip адресам и подсетям

В Nginx есть простой модуль ngx_http_access_module который управляет доступом. У него достаточно простой синтаксис:

deny IP; 
deny subnet;  
allow IP;  
allow subnet;  
# block all ips  
deny    all;  
# allow all ips  
allow    all;

Важно помни что правила проверяются по очереди.

Для того, что бы Nginx начал блокировать IP адреса необходимо зайти в файл nginx.conf и добавить следующую строку%

include blockips.conf;

После этого создадим файл blockips.conf в котором добавим:

deny 1.1.1.1
deny 2.2.2.2
deny 3.3.3.3

где 1.1.1.1 2.2.2.2 и 3.3.3.3 адреса которые необходимо заблокировать. Сохраняем и перезапускаем Nginx.

Как я говорил раньше, конфиг считывается последовательно, то есть, если вам например нужно запретить доступ определенной подсети, но исключить один IP адрес, то выглядеть это будет так:

location / {
  allow   192.168.1.1;
  deny    192.168.1.0/24;
}

И последнее, создадим свой HTTP 403 Сообщение об ограниченном доступе. Заходим в папку /usr/local/nginx/html и редактируем файл error403.html:

<html>  
<head><title>Error 403 - IP Address Blocked</title>
</head>  
<body>  
Your IP Address is blocked. If you this an error, please contact webmaster with your IP at webmaster@example.com 
</body> 
</html>  

Если включен SSL то вы можете так же показать IP клиента:

Your IP Address is <!--#echo var="REMOTE_ADDR" --> blocked.

Поле этого добавьте в nginx.conf:

# redirect server error pages to the static page
 error_page   403  /error403.html;
 location = /error403.html {
         root   html;
 }

перещзапустите nginx

Случайные Статьи

Loading…


Количество просмотров :6588

Оставьте коментарий