1、查找服務器所有訪問者ip方法:
awk '{print $1}' nginx_access.log |sort |uniq -c|sort -n
nginx.access.log 為nginx訪問日志文件所在路徑
會到如下結果,前面是ip的訪問次數,后面是ip,很明顯我們需要把訪問次數多的ip並且不是蜘蛛的ip屏蔽掉,如下面結果,
若 66.249.79.84 不為蜘蛛則需要屏蔽:
89 106.75.133.167
90 118.123.114.57
91 101.78.0.210
92 116.113.124.59
92 119.90.24.73
92 124.119.87.204
119 173.242.117.145
4320 66.249.79.84
2、屏蔽IP的方法:
在nginx的安裝目錄下面,新建屏蔽ip文件,命名為guolv_ip.conf,以后新增加屏蔽ip只需編輯這個文件即可。
加入如下內容並保存:
deny 66.249.79.84 ;
在nginx的配置文件nginx.conf中加入如下配置,可以放到http, server, location, limit_except語句塊,需要注意相對路徑,本例當中nginx.conf,guolv_ip.conf在同一個目錄中。
include guolv_ip.conf;
保存nginx.conf文件,然后測試現在的nginx配置文件是否是合法的:
nginx -t
如果配置沒有問題,就會輸出:
the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok configuration file /usr/local/nginx/conf/nginx.conf test is successful
如果配置有問題就需要檢查下哪兒有語法問題,如果沒有問題,需要執行下面命令,重載 nginx 配置文件:
service nginx reload
3、注意:
屏蔽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外,其他全部拒絕, //那需要你在guolv_ip.conf中這樣寫 allow 1.1.1.1; allow 1.1.1.2; deny all;
單獨網站屏蔽IP的方法,把include guolv_ip.conf; 放到網址對應的在server{}語句塊, 所有網站屏蔽IP的方法,把include guolv_ip.conf; 放到http {}語句塊。
