> 新闻 > 国内新闻 > 正文

绣春刀

Nginx limit_req 限流:几行配置挡住大部分CC攻击_我的网站

女婴起名王者荣耀

一 |     

     一键部署OpenClaw        服务器CPU莫名飙高,带宽跑满,看日志全是同一个IP一秒打来几十个请求——这不是业务火了,是被CC了。扛CC的第一道闸门不在代码里,在Nginx的限流模块里,配置成本几乎为零。    

全民健身,智慧出众。8月8日,全国桥牌通讯赛“全民健身日”专场在全国各地举办,以此迎接我国第18个“全民健身日”。    limit_req的原理是漏桶:你设定一个速率,超速的请求直接返回503或延迟排队。先用limit_req_zone定义一个计数区,再在location里挂上limit_req,两步完事。本次比赛共有23个省区市80个单位建立了117条赛线,其中公开组110条,青年组7条。依托通讯赛统一牌型、全国同步比拼的办赛优势,各地桥牌爱好者在家门口就能参与全国性赛事。不少赛场赛后在现场为参赛选手发放通讯赛定制环保包,将绿色低碳理念融入赛事,让全民健身不止于竞技比拼,更传递健康文明的生活方式。    
# nginx.conf 的 http 块里定义限流区
    # 以客户端IP为key,10MB内存可存约16万个IP状态    # rate=10r/s 表示平均每秒最多放行10个请求    limit_req_zone $binary_remote_addr zone=req_per_ip:10m rate=10r/s;    # server 或 location 块里应用    server {    location / {    limit_req zone=req_per_ip burst=20 nodelay;    proxy_pass http://127.0.0.1:8080;    }    }    burst=20是缓冲队列长度,配合nodelay表示突发20个请求立即处理、不排队,超出就直接拒。想对登录、搜索这类昂贵接口管得更严,单独再定义一个rate=2r/s的zone挂上去就行,互不影响。值得一提的是,8月8日恰逢在合肥举办的第九届世界青年桥牌锦标赛收官之日,通讯赛全民健身日的风也吹到了世青赛赛场,700余名海内外青年牌手共同感受到了全民健身日的氛围。    
# 对登录接口单独限流:每秒2个,突发5个
limit_req_zone $binary_remote_addr zone=login_limit:10m rate=2r/s;

location /login.php {
limit_req zone=login_limit burst=5 nodelay;
# 被限流的请求返回429而不是默认503
limit_req_status 429;
fastcgi_pass 127.0.0.1:9000;
}
    验证很简单:reload之后用ab压一下,ab -n 200 -c 20 https://你的域名/,看返回里有没有429或503;同时tail -f日志确认正常用户没被误伤。

二 | 限流阈值别拍脑袋定,先统计自己站点的正常峰值,设成峰值的两倍左右再逐步收紧。

三 | 限流是防守,如果卡死自己人就本末倒置了。国际赛场与全民健身在合肥同频联动,国际青年交流与全民普及双向呼应,为本次“全民健身日”专场赋予了特殊意义。    数据来源:nginx.org官方文档 ngx_http_limit_req_module 模块说明

        
    

申请创业报道,分享创业好点子。通讯赛“全民健身日”专场还通过金桥在线、新睿桥牌app线上开展,8月2日至8日期间,累计共有超10万人次在线上参与。点击此处,共同探讨创业新机遇!。“全民健身日”是一次集中展示,通讯赛坚持月月开赛,常态化办赛,是桥牌服务全民健身的长久底色。

Current article:http://www.kelozhaichongbaoshuo.pics/list_03k/3o7mk.docx

Published on:22:20:24