nginx 限制频繁访问的 remote_user,而不限制 IP - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MaxFang
V2EX    NGINX

nginx 限制频繁访问的 remote_user,而不限制 IP

  •  
  •   MaxFang 2018-12-07 19:57:22 +08:00 5680 次点击
    这是一个创建于 2579 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一般对于请求频繁的处理方式,我们会通过限制每分钟 IP 访问次数等方式去限制。 内部系统客户端可能会是一个 IP 下面多个用户账号,在某个用户请求频繁的时候,仅限制该用户 $remote_user 的请求,而不限制或禁用整个 IP。

    某个用户的键盘回车有问题,导致短时间进行了上万次请求(泪奔,被内部 DDOS 了)

    对于这种情况,各位大佬有木有神马好的方法。

    目前暂时是通过限制 IP 访问频率的方式限制的(这种会导致误 ban),没啥好的方法的话,准备脚本统计频繁访问的 $remote_user,记入 blacklist,系统中临时禁止 blacklist 中的用户请求,如手动返回 503。

    15 条回复    2018-12-08 00:07:29 +08:00
    Phant0m
        1
    Phant0m  
       2018-12-07 20:11:02 +08:00 via iPhone
    nginx 没有$remote_user 这个变量吧?
    hlwjia
        2
    hlwjia  
    PRO
       2018-12-07 20:13:27 +08:00
    这个 remote_user 是你自己编的吧

    能追踪到具体哪个用户的,只有你自己的 application 了吧。
    Phant0m
        3
    Phant0m  
       2018-12-07 20:14:30 +08:00 via iPhone
    不好意思哈刚才查了一下 确实有。
    使用 nginx_lua 申请一个内存内存字典作为计数器可以实现你想要的功能
    hlwjia
        4
    hlwjia  
    PRO
       2018-12-07 20:15:30 +08:00
    再退一步讲,码农们,不要老是代码解决问题啊。

    你这还是内部系统,直接把那人的键盘扔了就好了。
    Phant0m
        5
    Phant0m  
       2018-12-07 20:16:12 +08:00 via iPhone
    @hlwjia 启用并经过 Auth Basic Module 验证的用户 是有$remote_user 这个变量的
    hlwjia
        6
    hlwjia  
    PRO
       2018-12-07 20:16:39 +08:00
    @Phant0m 哈哈哈 看来 nginx 我也不是很熟
    Lax
        7
    Lax  
       2018-12-07 20:40:24 +08:00
    默认日志格式开头就有这个变量。
    可是这个问题里,联系回车不应该等同于连续提交啊,前端的锅。
    opengps
        8
    opengps  
       2018-12-07 20:45:44 +08:00
    cookie 里做识别吧
    wadahana
        9
    wadahana  
       2018-12-07 20:58:15 +08:00
    waf 了解下。
    MaxFang
        10
    MaxFang  
    OP
       2018-12-07 21:01:01 +08:00
    @Phant0m 恩恩,使用了 basic access authentication,日志里面是可以跟踪到的
    MaxFang
        11
    MaxFang  
    OP
       2018-12-07 21:11:59 +08:00
    @Lax 哈哈,这个可以有。 当然也想了解一下这种情况下有没有其他的方式来限制。
    MaxFang
        12
    MaxFang  
    OP
       2018-12-07 21:12:57 +08:00
    @wadahana 有同学也提到了,周末了解一下。
    MaxFang
        13
    MaxFang  
    OP
       2018-12-07 21:17:27 +08:00
    @opengps 通过代码段来控制嘛,目前的一种准备的做法是这个,只是感觉这种做法不优雅。哈哈
    ichou
        14
    ichou  
       2018-12-07 22:09:51 +08:00
    回车卡住触发上万次请求? 不是应该让前端给按钮写一个 disable-with 么?
    greenskinmonster
        15
    greenskinmonster  
       2018-12-08 00:07:29 +08:00 via Android
    limit req 可以用 session cookie 做 key,这样就是基于用户的限制
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5345 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 08:24 PVG 16:24 LAX 00:24 JFK 03:24
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86