Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

nginx: Блокируем доступ с определенных IP (модуль ngx_http_access_module)

Практика



Как заблокировать доступ к определенному сайту или ко всем сайтам на данном сервере для выбранных (заданных) IP адресов?

В nginx встроен модуль "ngx_http_access_module", который этим и занимается. Ничего дополнительно ставить не нужно - модуль идет сразу из коробки.


Синтаксис

У модуля всего две директивы: allow и deny.
  • Директива allow разрешает доступ с указанного IP.
  • Директива deny, соответствено, доступ запрещает.

Модуль читает правила одно за другим сверху вниз и первое совпавшее правило останавливает дальнейший анализ правил. Таким образом, если модуль нашел, что текущий IP адрес совпадает с просматриваемым правилом - он выполнит действие allow или deny, а все правила, следующие за совпавшим - будут проигнорированы.

Вот пример - мы разрешаем доступ с адреса 192.168.0.5, но запрещаем доступ со всей остальной подсети 192.168.0.0/24:
Allow 192.168.0.5;
Deny 192.168.0.0/24;

Казалось-бы - сеть "C" 192.168.0.0/24 полностью запрещена вторым правилом, а адрес 192.168.0.5 попадает в эту сеть - соответственно, тоже запрещен. Но нет, ведь его правило стоит перед правилом запрета всей сети, поэтому именно 192.168.0.5 будет разрешено работать дальше, а всем остальным из указанной C-сети - нет.


А вот пример правила, когда разрешен доступ только для определенных IP адресов:
allow 192.168.0.1;
allow 192.168.0.2;
allow 192.168.1.0/24;
deny  all;


Слово all, как Вы уже догадались, означает "все адреса".


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

Для этого откройте файл nginx.conf на редактирование и добавьте в секцию http{} нужные правила. Например, в конец секции. Таким образом Вы примените правила для всего сервера, тобишь - всех сайтов, им обслуживаемых.


Блокируем отдельные сайты

В этом случае следует открывать файлы конфигурации нужных сайтов (например, из каталога sites-enabled/) и добавлять директивы разрешения или запрета в секцию server{}.


Блокируем отдельные части сайта

Для этого открываем конфигурационные файлы нужных сайтов и добавляем директивы блокировки в секции location {}.

 

Актуально для: nginx

создано: 2017-05-09
обновлено: 2021-03-13
133569



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей



Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)

Термины: Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)