Запрет доступа по IP в nginx

Иногда может возникнуть необходимость статически запретить доступ с IP-адреса к тому или иному ресурсу. В nginx это можно сделать не одним способом, через разные конструкции, например через директиву if:

if ($remote_addr ~ (aaa.bbb.ccc.ddd)) {
        return 444;
}

Где aaa.bbb.ccc.ddd - IP-адрес, который нужно заблокировать, return 444 - код возвращаемого клиенту HTTP-ответа.

Таким же образом можно блокировать целые сети, не указывая последний октет IP-адреса.

if ($remote_addr ~ (aaa.bbb.ccc)) {
        return 444;
}

Если потребуется заблокировать несколько IP-адресов или подсетей, можно использовать следующую конструкцию.

if ($remote_addr ~ (aaa.bbb.ccc)|(ddd.eee.fff)|(ggg.hhh.iii)) {
        return 444;
}

Если требуется заблокировать всех, кроме указанных IP-адресов или подсетей, нужно перед тильдой добавить восклицательный знак.

if ($remote_addr !~ (aaa.bbb.ccc)|(ddd.eee.fff)|(ggg.hhh.iii)) {
        return 444;
}

P.S: использование условия if допустимо в контексте директив server и location.

nginx/zapret_dostupa_po_ip.txt · Последние изменения: 2015/05/25 17:28 — vav
Наверх
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0