怎么抓取对方的ip呢?抓取到了,又怎么写进去nginx去呢?这两个问题,没解决就是不知道怎么处理。
1、怎么抓取对方的ip呢?
答:用户访问接口时候,我们代码里面会获取当前访问的ip,记录访问的次数频率等,超过多少次就写进去某个文件里面
2、抓取到了,又怎么写进去nginx去呢?
答:include 方式引进被禁用的ip
如图:
获取ip代码(php代码)
if(getenv('HTTP_CLIENT_IP')){
$onlineip = getenv('HTTP_CLIENT_IP');
}elseif(getenv('HTTP_X_FORWARDED_FOR')){
$onlineip = getenv('HTTP_X_FORWARDED_FOR');
}elseif(getenv('REMOTE_ADDR')){
$onlineip = getenv('REMOTE_ADDR');
}else{
$onlineip = $HTTP_SERVER_VARS['REMOTE_ADDR'];
}
$txt_ip = 'deny '.$onlineip.';';
file_put_contents("ip.conf", $txt_ip.PHP_EOL, FILE_APPEND);
上面代码只是获ip,一分钟,访问多少以上才写入这个文件,就根据你们的自己定义了。
测试访问结果
屏蔽ip 知识
1、禁止某一个具体ip时,在 ip.conf 中添加 ,切记以分号结尾
deny 123.123.123.123;
2、允许或禁止所有ip
# block all ips
deny all;
# allow all ips
allow all;
3、网段封禁
#封整个段即从123.0.0.1到123.255.255.254的命令
deny 123.0.0.0/8
#封IP段即从123.45.0.1到123.45.255.254的命令
deny 124.45.0.0/16
#封IP段即从123.45.6.1到123.45.6.254的命令是
deny 123.45.6.0/24
4、在nginx.conf 的 http{} 代码段中添加,include 'ip.conf';