Как заблокировать доступ к определенному сайту или ко всем сайтам на данном сервере для выбранных (заданных) 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
Комментарии
Оставить комментарий
Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)
Термины: Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)