我想实现一个功能,如下:
监控一个ip访问特定网页(比如:1.com/asdf.html)的次数,超过5次之后就拉黑,返回404或者其他错误代码。
自己弄不来,求教,mini红包感谢。
山西网友:1、limit_req_zone 、burst 是漏斗算法,只能限制【并发访问量】,并不能实现【访问次数频限】
2、简单来说你的代码只能实现【每秒钟只响应1次,最多允许5个额外访问排队等待,再多的访问会立即返回NGX_BUSY即503】,并不能实现【单位时间内某IP访问X次就屏蔽Y秒,屏蔽时返回404】
3、如果楼主用的是openresty就很好实现。
安徽网友:
- 在nginx的http模块中添加以下配置
- limit_req_zone $binary_remote_addr zone=query:10m rate=1r/s;
- rate=1r/s 的意思是每个地址每秒只能请求一次
- 在server模块中添加一下配置
- location ~ /loan/query {
- limit_req zone=req_one burst=5;
- proxy_pass http://myapp;
- proxy_set_header Host $host;
- proxy_set_header X-Forwarded-For $remote_addr;
- }
- burst是指一共有5个令牌,发完后,只能根据rate的设定每秒新增一个
复制代码
西藏网友:大佬,我实在是搞不懂,能详细讲讲不,万分感谢。
未经允许不得转载:美国VPS_搬瓦工CN2 GIA VPS » 问一个nginx技术问题