Как заблокировать любой IP адрес в Nginx

В этой статье мы покажем, как заблокировать IP адрес или несколько ip адресов в nginx. Это полезно в случаях, когда кто-то рассылает спам или атакует ваш сайт. Тогда вам срочно требуется заблокировать IP адрес, чтобы атака прекратилась. Кроме того, это полезно, когда вам требуется разрешить x ip доступ к вашему сайту или любому разделу вашего сайта.

Как заблокировать любой IP адрес в Nginx
Как заблокировать любой IP адрес в Nginx

Выполните следующие шаги и узнайте, как это сделать.

Как заблокировать любой IP адрес в Nginx

Шаг 1 — Перейдите к файлу конфигурации Nginx

На этом этапе вам требуется открыть файл конфигурации nginx с помощью текстового редактора, такого как nano или vim

sudo nano /etc/nginx/nginx.conf

Примечание: Если вы используете стандартный nginx.conf для вашего сервера/сайта, то вам надо добавить изменения только в /etc/nginx/nginx.conf

Если вы используете виртуальные блоки и хотите заблокировать/разрешить ip только для одного виртуального блока, то вам требуется отредактировать этот файл.

/etc/nginx/sites-enabled/mysite.com

Шаг 2 — Введите IP адрес, который вы хотите заблокировать

Откройте файл конфигурации nginx.

sudo nano /etc/nginx/nginx.conf

Добавьте следующую строку, чтобы заблокировать ip адрес.

deny IP adress;

Пример:

deny 192.168.0.1;

Это строка будет блокировать доступ 192.168.0.1 к вашему серверу или веб-сайту.

Блокировка ip адреса для доступа ко всему вашему сайту

Если вы хотите заблокировать ip адрес для доступа к подкаталогу на вашем сайте и разрешить доступ к этому подкаталогу только вашему IP, используйте следующую конфигурацию.

location /my-subdirectory {
allow my ip;
deny all;
}

Конфигурация выше позволит только вашему IP получить доступ к /my-subdirectory и заблокирует все остальные IP адреса.

Блокировка ip адреса для доступа к вашему поддомену

Откройте файл конфигурации для сайта, на котором вы хотите добавить блокировку.

sudo nano /etc/nginx/sites-enabled/linuxwin.ru

Далее добавьте следующие строки.

server {
server subdomain.linuxwin.ru;
deny 192.168.0.1;
}

Конфигурация выше будет блокировать доступ 192.168.0.1 к вашему поддомену.

Блокировка всех ip адресов от доступа к вашему поддомену и разрешение только вашего ip

Строки ниже заблокируют доступ к вашему поддомену всем ip адресам, кроме вашего ip. Это означает, что только ваш IP будет иметь доступ к поддомену.

server {
server subdomain.linuxwin.ru;
deny all;
allow myip;
}

Данная конфигурация полезна, когда вы работаете над новым поддоменом на вашем сайте и не хотите, чтобы кто-то еще видел его, пока вы работаете над ним. Далее, когда вы закончите работу и захотите, чтобы этот поддомен был виден и доступен всем, просто удалите строку deny all. Файл конфигурации должен выглядеть следующим образом.

server {
server subdomain.linuxwin.ru;
}

Блокирование нескольких IP адресов Nginx

Если вам требуется заблокировать доступ нескольких ip адресов к вашему серверу или сайту, то просто добавьте директиву deny для всех айпишников.

deny ip1;
deny ip2;
deny ip3;
deny ip4;

alow all;

Конфигурация указанная выше, запретит доступ 4 ip адресам и разрешит доступ ко всем остальным адресам.

Заблокировать диапазоны IP адресов в Nginx

Для блокировки диапазонов IP адресов в Nginx можно использовать модуль ngx_http_access_module. Вот как это можно сделать.

Откройте конфигурационный файл Nginx для вашего сайта. Обычно он находится в директории /etc/nginx и называется nginx.conf или site.conf.

Внутри блока http, добавьте строчки для создания списка запрещенных IP адресов.

http {
    # ...
    deny 192.168.1.0/24;
    # ...
}

В приведенном примере блокируются диапазон IP адресов: 192.168.1.0/24. Вы можете добавить или изменить диапазоны по своему усмотрению.

Далее требуется охранить изменения в конфигурационном файле Nginx.

Шаг 3 — Проверка синтаксиса Nginx

Последний шаг, перед перезапуском nginx необходимо проверить правильность синтаксиса.

sudo nginx -t

Если вы не получаете никаких ошибок, то перезапустите nginx.

sudo systemctl restart nginx

Заключение

Вот и все! Теперь вы можете блокировать или разрешать любой ip адрес или диапазон для вашего сайта или сервера.

Nazario

Я — Nazario, создатель и автор сайта linuxwin.ru, специализируюсь на информационных технологиях с акцентом на системное администрирование Linux и Windows, веб-разработку и настройку различных систем.

Linux и Windows
Выскажите своё мнение или присоединяйтесь к обсуждению:

Отправляя комментарий, вы даете согласие на обработку ваших данных в соответствии с политикой конфиденциальности и даёте согласие на их использование.