Você pode usar a diretiva geo
para especificar intervalos de endereços IP.
Veja um exemplo:
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;
}
Isso deve estar no bloco http
, fora de qualquer bloco server
.
Define a variável $block_these_turkeys
para o valor fornecido, com base em se o endereço IP corresponde a uma das listagens.
Mais tarde, no bloco server
em que você deseja usá-lo, faça algo como:
server {
....
if ($block_these_turkeys) {
return 444;
}
....
}
Ao reverter o valor, você pode permitir intervalos de 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;
}
....
}