Иногда может возникнуть необходимость статически запретить доступ с 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.