我有一个Nginx
例子,其中我只想允许特定的 IP 范围:
allow 192.168.0.0/16;
deny all;
这工作正常,但是当被拒绝时,403
会返回。
我没有拒绝 IP 来确认我有一个 Web 服务器。但是我可以返回444
,也就是丢弃数据包吗?
答案1
实际上,您可以使用 geo 指令,也可以使用 if 和 return 指令来实现您的目的。以下是您需要使用的配置:
http{
...
geo $remote_addr $allowed_trafic {
default false;
192.168.0.0/16 true;
}
}
server {
...
if ( $allowed_trafic = 'false'){
return 444;
}
...
}
希望这对你有帮助。谢谢。
答案2
你可以尝试这个:
- 创建文件“ip.conf”,然后包含到“nginx.conf”
- “ip.conf” 看起来应该是这样的:
geo $bad_ip {
192.168.0.0/16;
10.0.0.0/16;
default 1;
}
- “app.conf”文件应如下所示:
location / {
if ($bad_ip) {
return 444;
}
proxy_pass http://app/;
}