一般对于请求频繁的处理方式,我们会通过限制每分钟 IP 访问次数等方式去限制。 内部系统客户端可能会是一个 IP 下面多个用户账号,在某个用户请求频繁的时候,仅限制该用户 $remote_user 的请求,而不限制或禁用整个 IP。
某个用户的键盘回车有问题,导致短时间进行了上万次请求(泪奔,被内部 DDOS 了)
对于这种情况,各位大佬有木有神马好的方法。
目前暂时是通过限制 IP 访问频率的方式限制的(这种会导致误 ban),没啥好的方法的话,准备脚本统计频繁访问的 $remote_user,记入 blacklist,系统中临时禁止 blacklist 中的用户请求,如手动返回 503。
|  |      1Phant0m      2018-12-07 20:11:02 +08:00 via iPhone nginx 没有$remote_user 这个变量吧? | 
|  |      2hlwjia PRO 这个 remote_user 是你自己编的吧 能追踪到具体哪个用户的,只有你自己的 application 了吧。 | 
|  |      3Phant0m      2018-12-07 20:14:30 +08:00 via iPhone 不好意思哈刚才查了一下 确实有。 使用 nginx_lua 申请一个内存内存字典作为计数器可以实现你想要的功能 | 
|  |      4hlwjia PRO 再退一步讲,码农们,不要老是代码解决问题啊。 你这还是内部系统,直接把那人的键盘扔了就好了。 | 
|  |      5Phant0m      2018-12-07 20:16:12 +08:00 via iPhone @hlwjia 启用并经过 Auth Basic Module 验证的用户 是有$remote_user 这个变量的 | 
|      7Lax      2018-12-07 20:40:24 +08:00 默认日志格式开头就有这个变量。 可是这个问题里,联系回车不应该等同于连续提交啊,前端的锅。 | 
|  |      8opengps      2018-12-07 20:45:44 +08:00 cookie 里做识别吧 | 
|      9wadahana      2018-12-07 20:58:15 +08:00 waf 了解下。 | 
|  |      14ichou      2018-12-07 22:09:51 +08:00 回车卡住触发上万次请求? 不是应该让前端给按钮写一个 disable-with 么? | 
|  |      15greenskinmonster      2018-12-08 00:07:29 +08:00 via Android limit req 可以用 session cookie 做 key,这样就是基于用户的限制 |