nginx 屏蔽某些ip,防止有些人刷接口攻击

怎么抓取对方的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,一分钟,访问多少以上才写入这个文件,就根据你们的自己定义了。

测试访问结果

扫描二维码关注公众号,回复: 16799803 查看本文章

屏蔽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';

猜你喜欢

转载自blog.csdn.net/qq_34861341/article/details/126609775