OpenResty + Lua + Redis 实现 客户端ip防刷
一、环境说明:
在Centos7上安装openresty
此次安装采用的是下载openresty的yum源来安装
sudo:yum-config-manager:找不到命令
解决办法:
[root@kusou-es11 conf]# yum -y install yum-utils
下载Openresty的yum源:
安装命令:
到此处安装完成
二、防刷和限流概念介绍:
防刷的概念:
防刷的目的是为了防止有些IP来爬去我们的网页,获取我们的价格等信息。不像普通的搜索引擎,这种爬去行为我们经过统计最高每秒300次访问,平均每秒266次访问。
由于我们的网站的页面都在CDN上,导致我们的CDN流量会定时冒尖。为了防止这种情况,打算将网页页面的访问从CDN切回主站。同时开启防刷功能,目前设置一秒200次访问即视为非法,会阻止10分钟的访问。
限流的概念:
限流的目的是在大促或者流量突增期间,我们的后端服务假设某个接口能够扛住的的QPS为10000,这时候同时有20000个请求进来,经过限流模块,会先放10000个请求,其余的请求会阻塞一段时间。不简单粗暴的返回404,让客户端重试,同时又能起到流量销峰的作用。
原文出处: https://blog.csdn.net/fenglvming/article/details/51996406 此处简单引用,入涉及侵权,及时通知删除
三、客户端ip防刷具体实现
nginx配置文件如下:
四、测试演示:
ab软件压测:
-c10表示并发用户数为10
-n10表示请求总数为10
[root@VM_82_178_centos ~]# ab -c 10 -n 10 ‘ http://01ip-blacklist.com/1.html’
压测后登录redis查看redis key值
过一分钟恢复,可以正常的请求
[root@VM_82_178_centos limit]# curl http://01ip-blacklist.com/1.html
1234