问一个nginx技术问题

搬瓦工机场JMS

我想实现一个功能,如下:
监控一个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就很好实现。
安徽网友:

  1. 在nginx的http模块中添加以下配置
  2. limit_req_zone $binary_remote_addr zone=query:10m rate=1r/s;
  3. rate=1r/s 的意思是每个地址每秒只能请求一次
  4. 在server模块中添加一下配置
  5.     location ~ /loan/query {
  6.         limit_req zone=req_one burst=5;
  7.         proxy_pass http://myapp;
  8.         proxy_set_header Host $host;
  9.         proxy_set_header X-Forwarded-For $remote_addr;
  10.     }
  11. burst是指一共有5个令牌,发完后,只能根据rate的设定每秒新增一个

复制代码

西藏网友:大佬,我实在是搞不懂,能详细讲讲不,万分感谢。

未经允许不得转载:美国VPS_搬瓦工CN2 GIA VPS » 问一个nginx技术问题

赞 (0) 打赏

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏