Я использую nginx latest web server
. Как я могу проверить, есть ли $remote_addr
ip НЕ указан CIDR range
и return appropriate error code
.
Я хотел бы вернуть конкретные коды ошибок, если IP НЕ входит в определенные диапазоны IP CIDR.
как я могу сделать это для диапазона IP CIDR ? например
Вы можете использовать geo
директива для указания диапазонов IP-адресов.
Вот пример:
geo $block_these_turkeys {
default 0;
192.0.2.0/24 1;
198.51.100.0/24 1;
203.0.113.0/24 1;
2001:db8::/32 1;
}
Это должно быть в http
блок, вне любого server
блок.
Он устанавливает переменную $block_these_turkeys
к заданному значению в зависимости от того, соответствует ли IP-адрес одному из списков.
Позже в server
блок, где вы хотите его использовать, сделайте что-нибудь вроде:
server {
....
if ($block_these_turkeys) {
return 444;
}
....
}
По реверсирование значение, вы можете позволять Вместо этого диапазоны IP.
geo $block_almost_everybody {
default 1;
192.0.2.0/24 0;
198.51.100.0/24 0;
203.0.113.0/24 0;
2001:db8::/32 0;
}
server {
....
if ($block_almost_everybody) {
return 444;
}
....
}