zoukankan      html  css  js  c++  java
  • 在Nginx服务器上屏蔽IP

    采集和防止采集是一个经久不息的话题,一方面都想搞别人的东西,另一方面不想自己的东西被别人搞走。

    本文介绍如何利用nginx屏蔽ip来实现防止采集,当然也可以通过iptable来实现。

    1.查找要屏蔽的ip

    awk '{print $1}' nginx.access.log |sort |uniq -c|sort -n

    nginx.access.log 为日志文件,

    会到如下结果,前面是ip的访问次数,后面是ip,很明显我们需要把访问次数多的ip并且不是蜘蛛的ip屏蔽掉,本例当中我们屏蔽掉

    165.91.122.67
    
    ...
    13610 202.112.113.192
    95772 180.169.22.135
    337418 219.220.141.2
    558378 165.91.122.67

    2.在nginx的安装目录下面,新建屏蔽ip文件,命名为blockip.conf,以后新增加屏蔽ip只需编辑这个文件即可。 加入如下内容

    deny 165.91.122.67; 

    保存一下。

    3.在nginx的配置文件nginx.conf中加入如下配置,可以放到http, server, location, limit_except语句块,需要注意相对路径,本例当中nginx.conf,blocksip.conf在同一个目录中。

    include blockip.conf; 
    nginx.conf文件将该配置加入http{}标签末尾:
    
    vim nginx.conf
    http{
    
        include blocksip.conf;
    }
    
    nginx -t
    nginx -s reload

    4.重启一下nginx的服务:/usr/local/nginx/nginx -s reload 就可以生效了。

    高级用法:

    屏蔽ip的配置文件既可以屏蔽单个ip,也可以屏蔽ip段,或者只允许某个ip或者某个ip段访问。

    # 屏蔽单个ip访问

    deny IP;
    # 允许单个ip访问

    allow IP;
    # 屏蔽所有ip访问

    deny all;
    # 允许所有ip访问

    allow all;
    #屏蔽整个段即从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

    如果你想实现这样的应用,除了几个IP外,其他全部拒绝,
    那需要你在blockip.conf中这样写

    allow 1.1.1.1; 
    allow 1.1.1.2;
    deny all;

     允许IP访问最后一定要加deny all;表示除了上面allow的其他都禁止


    单独网站屏蔽IP的方法,把include blocksip.conf; 放到网址对应的在server{}语句块,
    所有网站屏蔽IP的方法,把include blocksip.conf; 放到http {}语句块。

    如果一个server里,转发好多location,可以用以下办法

    如果想只针对某个网站,可以在具体的网站的配置中加入:

    location / {
    allow   192.168.0.0/24;
    deny    all;
    }

    这样就只允许192.168.0.0网段的ip访问

    屏蔽访问过于频繁的IP脚本需要根据实际的nginx log 格式,修改,取出 访问IP 和User-Agent.
    在nginx配置文件中添加一条配置

    include ./vhost/blockip.conf;

    脚本内容:

    #!/bin/bash
    nginx_home=/usr/local/webserver/nginx
    log_path=/usr/local/webserver/nginx/logs
    tail -n50000 /usr/local/webserver/nginx/logs/access.log 
    |awk '{print $1,$12}' 
    |grep -i -v -E "google|yahoo|baidu|msnbot|FeedSky|sogou" 
    |awk '{print $1}'|sort|uniq -c|sort -rn 
    |awk '{if($1>1000)print "deny "$2";"}' >$nginx_home/conf/vhost/blockip.conf
    /etc/init.d/nginx reload

    转自

    在Nginx服务器上屏蔽IP的一些基本配置方法分享_nginx_脚本之家
    http://www.jb51.net/article/77043.htm

     

    nginx屏蔽ip – 运维与架构 - nginx.cn
    http://www.nginx.cn/2487.html

    单独网站屏闭IP的方法:

    在server"{}",在这个大括号内加入deny IP地址是限制某IP地址访问;allow IP地址是只允许某IP地址访问;

    #屏蔽单个IP的命令是
    deny 123.45.6.7
    #封整个段即从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

     或者

    如果想只针对某个网站,可以在具体的网站的配置中加入:

    location / {
    allow   192.168.0.0/24;
    deny    all;
    }

    这样就只允许192.168.0.0网段的ip访问

    所有网站屏蔽IP的方法,把deny IP; 放到http {}语句块。

     
     转自

    nginx 禁止某个IP访问 - 前端开发&搜索引擎优化 - CSDN博客
    http://blog.csdn.net/qq435792305/article/details/10498999

    Nginx禁止ip访问或IP网段访问方法 - studyphp - 博客园

    https://www.cnblogs.com/already/p/6244295.html

    (4条消息)nginx限制ip访问 nginx访问权限 - 系统运维 - CSDN博客 https://blog.csdn.net/xiaocao12/article/details/52304097

  • 相关阅读:
    洛谷 1339 最短路
    洛谷 1330 封锁阳光大学 图论 二分图染色
    洛谷 1262 间谍网络 Tarjan 图论
    洛谷 1373 dp 小a和uim之大逃离 良心题解
    洛谷 1972 莫队
    洛谷 2158 数论 打表 欧拉函数
    洛谷 1414 数论 分解因数 水题
    蒟蒻的省选复习(不如说是noip普及组复习)————连载中
    关于筛法
    关于整数划分的几类问题
  • 原文地址:https://www.cnblogs.com/paul8339/p/7269029.html
Copyright © 2011-2022 走看看