- Как заблокировать любой IP адрес в Nginx
- Шаг 1 — Перейдите к файлу конфигурации Nginx
- Шаг 2 — Введите IP адрес, который вы хотите заблокировать
- Блокировка ip адреса для доступа ко всему вашему сайту
- Блокировка ip адреса для доступа к вашему поддомену
- Блокировка всех ip адресов от доступа к вашему поддомену и разрешение только вашего ip
- Блокирование нескольких IP адресов Nginx
- Заблокировать диапазоны IP адресов в Nginx
- Шаг 3 — Проверка синтаксиса Nginx
- Заключение
В этой статье мы покажем, как заблокировать IP адрес или несколько ip адресов в nginx. Это полезно в случаях, когда кто-то рассылает спам или атакует ваш сайт. Тогда вам срочно требуется заблокировать IP адрес, чтобы атака прекратилась. Кроме того, это полезно, когда вам требуется разрешить x ip доступ к вашему сайту или любому разделу вашего сайта.
Выполните следующие шаги и узнайте, как это сделать.
Как заблокировать любой 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 адрес или диапазон для вашего сайта или сервера.