iptables 是否可以监控性能
发布网友
发布时间:2023-11-05 07:41
我来回答
共1个回答
热心网友
时间:2024-11-19 21:31
用下面的iptables命令
iptables -I INPUT -s <ip-to-ban> -j DROP
service iptables save
service iptables restart
那如何统计nginx的访问ip呢,目前来说比较简单就是读取nginx的access.log文件,然后分析一下,如果一天超过阈值,我们就执行上面的命令,ban掉ip。
有个问题是我们需要的是一直监视access.log 文件,而不是读一次,当然可以在每天快结束的时候事后来封住ip,但是这样不能给爬虫嚣张的气焰,所以
我觉得立即封掉是比较OK的。
之前写过一个类似tail读取一个文件的功能,就是打开的时候先定位到文件大小的位置,然后就开始循环读行来处理,这次的处理有点不一样,我是直接使用tail 把那个文件的流定位到我的程序的 sys.stdin ,这样就简单的可以读到所有的流了
tail /var/log/nginx/access.log | python <your_python_script>.py
但是nginx的access.log每天都会做一次logrotate,它是怎么做的呢,nginx官网的推荐方式
mv access.log access.log.0
kill -USR1 `cat master.nginx.pid`
sleep 1
gzip access.log.0 # do something with access.log.0
我的vps上面使用的是logrotated来处理的,可以在/etc/logrotate.d/nginx
/var/log/nginx/*.log {
daily
missingok
rotate 52
compress
delaycompress
notifempty
create 640 nginx adm
sharedscripts
postrotate
[ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
endscript
}