nginx配置限速限流基于内置模块


Posted in Servers onMay 02, 2022

有时候 NGINX 面对一些特殊的场景时,需要进行一定的限速限流的配置,比如一个官网,可能前端静态文件是非常小的,但是同时配置的还有一些 apk 包,这些包如果不做任何限制,可能会形成比较大的负载或者带宽的压力,我这边碰到了,今天就来针对这个问题处理一下。

没有限制之前,对应的包下载速度如下:

nginx配置限速限流基于内置模块

添加如下配置,进行一定的限制:

http {
    ...#省略
    limit_conn_zone $binary_remote_addr zone=addr:10m;
    ...#省略
}
server {
    listen 80 default;
    server_name localhost;
    location ~ "^/test/app/" {
         limit_conn addr 6;
        limit_rate_after 10m;
        limit_rate 1200k;
        limit_conn_status 499;
        limit_conn_log_level warn;
        root  /app;
    }
}

说明:

http 区域,我这里使用的是 1.15 版本的,默认已经安装了对应的模块ngx_http_limit_conn_module。

limit_conn_zone:是一个固定的名称,下边调用的时候与之对应。 $binary_remote_addr:表示通过

remote_addr 这个标识来做限制,“binary_” 的目的是缩写内存占用量,是限制同一客户端 ip 地址。

zone=addr:10m:示生成一个大小为 10M,名字为 addr 的内存区域,用来存储访问的频次信息。

server 区域,可以直接写在 server 区域内,表示限制所有,也可以写到对应的 location 当中,以表示单独区域限制。

limit_conn:表示单个 IP 限制最大连接数为 6。 limit_rate_after:表示请求前 10m 大小时不限速。

limit_rate:表示单个连接最大连接带宽限制为 1200k。 limit_conn_status:设置拒绝请求的返回值。值只能设置400 到 599 之间(默认是 503)。 limit_conn_log_level:定义日志级别,默认 error。

现在简单的做一下测试看看下载速度:

nginx配置限速限流基于内置模块

可以看到对应的速度已经收到限制,而且是在 10M 之后速度开始慢慢下降,直至达到限制的位置。现在可以简单压测看下情况:

$ ab -n 10 -c 10 http://www.test.com/res/app/app-xiaomi-release.apk

这条命令表示请求 10 次对应资源,并发为 10。监控对应日志,看到如下结果,因为我们定义的最大并发是 6,所以将会有 4 个失败,并返回 499 状态码,然后有 6 个成功。

$tailf -n 100 a |awk -F "," '{print  $6}'
"response": "499"
"response": "499"
"response": "499"
"response": "499"
"response": "200"
"response": "200"
"response": "200"
"response": "200"
"response": "200"
"response": "200"

另外在压测命令之后,还有一些输出可以参考:

Total transferred:      403483116 bytes
HTML transferred:       403481400 bytes
Requests per second:    0.18 [#/sec] (mean)
Time per request:       56865.501 [ms] (mean)
Time per request:       5686.550 [ms] (mean, across all concurrent requests)
Transfer rate:          6929.10 [Kbytes/sec] received

其他的不说了,只看最后一条,可以看到总的对外输出是大约7M/s,正好符合单条限制 1.2M/s 乘以 6 的数值。

总结

到此这篇关于nginx配置限速限流基于内置模块的文章就介绍到这了!


Tags in this post...

Servers 相关文章推荐
Nginx优化服务之网页压缩的实现方法
Mar 31 Servers
Nginx服务器添加Systemd自定义服务过程解析
Mar 31 Servers
Nginx反向代理及负载均衡如何实现(基于linux)
Mar 31 Servers
nginx限制并发连接请求数的方法
Apr 01 Servers
apache基于端口创建虚拟主机的示例
Apr 24 Servers
nginx请求限制配置方法
Jul 09 Servers
Nginx配置文件详解以及优化建议指南
Sep 15 Servers
nginx location 带斜杠【 / 】与不带的区别
Apr 13 Servers
搭建Yolov5服务器
Apr 30 Servers
讨论nginx location 顺序问题
May 30 Servers
git stash(储藏)的用法总结
Jun 25 Servers
Windows7下FTP搭建图文教程
Aug 05 Servers
Nginx配置之禁止指定IP访问
centos7安装mysql5.7经验记录
May 02 #Servers
使用 Docker Compose 构建复杂的多容器App
Apr 30 #Servers
搭建Yolov5服务器
KVM基础命令详解
Apr 30 #Servers
Win10 Anaconda安装python-pcl
如何开启Apache,Nginx和IIS服务器的GZIP压缩功能
Apr 29 #Servers
You might like
帝国CMS留言板回复后发送EMAIL通知客户
2015/07/06 PHP
解决php表单重复提交实现方法
2015/09/29 PHP
PHP长网址与短网址的实现方法
2017/10/13 PHP
PHP PDOStatement::bindParam讲解
2019/01/30 PHP
JS获取IUSR_机器名和IWAM_机器名帐号的密码
2006/12/06 Javascript
js nextSibling属性和previousSibling属性概述及使用注意
2013/02/16 Javascript
js控制的遮罩层实例介绍
2013/05/29 Javascript
jQuery.event兼容各浏览器的event详细解析
2013/12/18 Javascript
jQuery简单实现banner图片切换
2014/01/02 Javascript
JavaScript面向对象编程入门教程
2014/04/16 Javascript
js浏览器本地存储store.js介绍及应用
2014/05/13 Javascript
jquery移动点击的项目到列表最顶端的方法
2015/06/24 Javascript
jquery实现的蓝色二级导航条效果代码
2015/08/24 Javascript
JavaScript中将数组进行合并的基本方法讲解
2016/03/07 Javascript
jQuery添加和删除输入文本框标签代码
2016/05/20 Javascript
vue.js入门教程之计算属性
2016/09/01 Javascript
AngularJS实现标签页的两种方式
2016/09/05 Javascript
vue.js指令和组件详细介绍及实例
2017/04/06 Javascript
node.js中实现kindEditor图片上传功能的方法教程
2017/04/26 Javascript
axios进阶实践之利用最优雅的方式写ajax请求
2017/12/20 Javascript
node.js使用express框架进行文件上传详解
2019/03/03 Javascript
JS使用正则表达式判断输入框失去焦点事件
2019/10/16 Javascript
js实现飞机大战小游戏
2020/08/26 Javascript
[01:02:47]EG vs Secret 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
调整Jupyter notebook的启动目录操作
2020/04/10 Python
浅谈Python中的模块
2020/06/10 Python
解决python 虚拟环境删除包无法加载的问题
2020/07/13 Python
如何基于Python和Flask编写Prometheus监控
2020/11/25 Python
日本最大的眼镜购物网站:Oh My Glasses
2016/11/13 全球购物
美国马匹用品和马钉购物网站:State Line Tack
2018/08/05 全球购物
新学期红领巾广播稿
2014/01/14 职场文书
给老师的一封建议书
2014/03/13 职场文书
银行求职信
2014/05/31 职场文书
美德少年事迹材料1000字
2014/08/21 职场文书
普通党员个人对照检查材料
2014/09/18 职场文书
新生开学寄语大全
2015/05/28 职场文书