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 09 Servers
本地通过nginx配置反向代理的全过程记录
Mar 31 Servers
nginx部署多前端项目的几种方法
May 25 Servers
配置nginx 重定向到系统维护页面
Jun 08 Servers
nginx共享内存的机制详解
Mar 21 Servers
Minikube搭建Kubernetes集群
Mar 31 Servers
HDFS免重启挂载新磁盘
Apr 06 Servers
Tomcat项目启动失败的原因和解决办法
Apr 20 Servers
服务器间如何实现文件共享
May 20 Servers
Linux中文件的基本属性介绍
Jun 01 Servers
利用Apache Common将java对象池化的问题
Jun 16 Servers
Nginx 502 bad gateway错误解决的九种方案及原因
Aug 14 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
php 广告调用类代码(支持Flash调用)
2011/08/11 PHP
PHP反射类ReflectionClass和ReflectionObject的使用方法
2013/11/13 PHP
PHP编译安装中遇到的两个错误和解决方法
2014/08/20 PHP
PHP中使用foreach()遍历二维数组的简单实例
2016/06/13 PHP
浅谈Laravel中的一个后期静态绑定
2017/08/11 PHP
原生php实现excel文件读写的方法分析
2018/04/25 PHP
php实现的生成排列算法示例
2019/07/25 PHP
基于jquery的关于动态创建DOM元素的问题
2010/12/24 Javascript
js的表单操作 简单计算器
2011/12/29 Javascript
javascript中普通函数的使用介绍
2013/12/19 Javascript
javascript获取form里的表单元素的示例代码
2014/02/14 Javascript
jquery分页对象使用示例
2014/04/01 Javascript
两个多选select(multiple左右)添加、删除选项和取值实例
2014/05/12 Javascript
jQuery使用hide方法隐藏指定元素class样式用法实例
2015/03/30 Javascript
javascript函数式编程实例分析
2015/04/25 Javascript
Javascript实现鼠标右键特色菜单
2015/08/04 Javascript
JS使用JSON作为参数实例分析
2016/06/23 Javascript
jQuery获取单选按钮radio选中值与去除所有radio选中状态的方法
2017/05/20 jQuery
Vue官方文档梳理之全局配置
2017/11/22 Javascript
Angular 5.x 学习笔记之Router(路由)应用
2018/04/08 Javascript
微信小程序显示倒计时功能示例【测试可用】
2018/12/03 Javascript
axios如何取消重复无用的请求详解
2019/12/15 Javascript
用Python设计一个经典小游戏
2017/05/15 Python
python3.5+tesseract+adb实现西瓜视频或头脑王者辅助答题
2018/01/17 Python
基于YUV 数据格式详解及python实现方式
2019/12/09 Python
Tensorflow 多线程与多进程数据加载实例
2020/02/05 Python
Python爬虫入门有哪些基础知识点
2020/06/02 Python
Python中的With语句的使用及原理
2020/07/29 Python
施华洛世奇加拿大官网:SWAROVSKI加拿大
2018/06/03 全球购物
美国运动鞋和服装网上商店:YCMC
2018/09/15 全球购物
SIMON MILLER官网:洛杉矶的生活方式品牌
2020/10/19 全球购物
C语言中一个结构不能包含指向自己的指针吗
2012/05/25 面试题
大学生毕业自我鉴定
2013/11/06 职场文书
文明青少年标兵事迹材料
2014/01/28 职场文书
2014年团员学习十八大思想汇报
2014/09/13 职场文书
孝女彩金观后感
2015/06/10 职场文书