Nginx在统信UOS上支持三种原生限速机制:一、limit_req基于令牌桶按IP限请求速率;二、limit_conn限制单IP并发连接数;三、limit_rate控制响应发送速率;可组合实现分层防护。

如果您已在统信UOS上成功部署Nginx,但需控制客户端访问频率、防止突发流量冲击或限制资源滥用,则需配置Nginx限速功能。Nginx原生支持三种核心限速机制,无需额外模块编译,仅需修改配置文件并重载服务即可生效。
一、配置limit_req模块实现请求速率限制
该方法基于令牌桶算法,按客户端IP统计单位时间内的请求数,超出阈值的请求将被延迟或拒绝,适用于防刷、API调用节流等场景。
1、编辑主配置文件:sudo nano /etc/nginx/nginx.conf。
2、在http块内顶部添加限速区域定义:limit_req_zone $binary_remote_addr zone=req_limit:10m rate=5r/s;。
3、进入目标server块,在需要限速的location中添加应用指令:limit_req zone=req_limit burst=10 nodelay;。
4、测试配置语法正确性:sudo nginx -t,输出“syntax is ok”后继续。
5、重载服务使配置生效:sudo systemctl reload nginx。
二、配置limit_conn模块实现并发连接数限制
该方法限制单个客户端IP可建立的并发TCP连接总数,有效抑制慢速攻击与连接耗尽类风险,作用于网络连接层而非HTTP请求层。
1、在http块内添加连接限制区域:limit_conn_zone $binary_remote_addr zone=conn_limit:10m;。
2、在server块或location块中启用限制:limit_conn conn_limit 3;(表示单IP最多3个并发连接)。
3、若需对特定路径如/api/单独限制,将limit_conn指令置于对应location /api/ { ... }内部。
4、执行配置检测:sudo nginx -t。
5、重载服务:sudo systemctl reload nginx。
三、配置limit_rate与limit_rate_after实现响应速度限制
该方法控制Nginx向客户端发送响应体的字节速率,适用于大文件下载场景,避免带宽被单一请求长期独占。
1、在http、server或location块中添加限速指令:limit_rate 200k;(单位为字节/秒,此处为200KB/s)。
2、如需跳过初始缓冲阶段再开始限速,添加延迟触发条件:limit_rate_after 1m;(表示前1MB数据不设限)。
3、若仅对下载路径生效,将上述两行置于location ~ \.(zip|pdf|iso)$ { ... }块内。
4、验证配置:sudo nginx -t。
5、重载服务:sudo systemctl reload nginx。
四、组合多种限速策略实现分层防护
单一限速维度难以覆盖全部异常行为,建议在关键接口同时启用请求速率、连接数与响应速率三重限制,形成纵深防御结构。
1、在http块中统一声明三个区域:limit_req_zone $binary_remote_addr zone=req_zone:10m rate=2r/s; limit_conn_zone $binary_remote_addr zone=conn_zone:10m; limit_rate 100k;。
2、在location /api/v1/submit中叠加应用:limit_req zone=req_zone burst=3 nodelay; limit_conn conn_zone 2; limit_rate_after 512k;。
3、确保各指令顺序不影响逻辑执行,Nginx按limit_conn → limit_req → limit_rate优先级生效。
4、运行语法检查:sudo nginx -t。
5、立即重载配置:sudo systemctl reload nginx。











