百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

包学包会!Nginx限流的三种方法(nginx限流原理)

off999 2025-01-31 14:39 31 浏览 0 评论

一般对外暴露的系统,在促销或者黑客攻击时会涌来大量的请求,为了保护系统不被瞬间到来的高并发流量给打垮, 就需要限流,文章主要介绍了nginx限流方案的实现,希望对大家有帮助~

通过查看nginx官方文档,归纳为三种nginx限流方式:

  • limit_conn_zone
  • limit_req_zone
  • ngx_http_upstream_module

前两种只能对客户端(即单一ip限流),并且文档也很全,但是经过测试发现,还是无法达到官方文档所说的结果。

这里先简单的介绍一下前两种:

limit_conn_zone

1.1 nginx配置

http{
 limit_conn_zone $binary_remote_addr zone=one:10m;
 server
 {
   ......
  limit_conn one 10;
  ......
 }
}

其中“limit_conn one 10”既可以放在server层对整个server有效,也可以放在location中只对单独的location有效。该配置表明:客户端的并发连接数只能是10个。

1.2结果

ab工具20并发去请求nginx,可以看到

Complete requests: 20

Failed requests: 9

(由于nginx配置中一个ip并发连接数为10,而结果中成功数为+1的原因未知;nginx的日志中也可以看到有9个请求返回503)

limit_req_zone

2.1 nginx配置

http{
 limit_req_zone $binary_remote_addr zone=req_one:10m rate=1r/s;
 server
 {
   ......
  limit_req zone=req_one burst=120;
  ......
 }
}

其中“limit_req zone=req_one burst=120”既可以放在server层对整个server有效,也可以放在location中只对单独的location有效。

「rate=1r/s」的意思是每个地址每秒只能请求一次,也就是说令牌桶burst=120一共有120块令牌,并且每秒钟只新增1块令牌,120块令牌发完后,多出来的请求就会返回503.。

ngx_http_upstream_module

3.1 介绍

作为优秀的负载均衡模块,目前是我工作中用到最多的。其实,该模块是提供了我们需要的后端限流功能的。通过官方文档介绍,该模块有一个参数:「max_conns」可以对服务端进行限流,可惜在商业版nginx中才能使用。

然而,在nginx1.11.5版本以后,官方已经将该参数从商业版中脱离出来了,也就是说只要我们将生产上广泛使用的nginx1.9.12版本和1.10版本升级即可使用(通过测试可以看到,在旧版本的nginx中,如果加上该参数,nginx服务是无法启动的)。

3.2 配置Nginx

upstream xxxx{
  
 server 127.0.0.1:8080 max_conns=10;
  
 server 127.0.0.1:8081 max_conns=10;
  
}

3.3结果(不便截图)

用两台机器各自用ab工具向nginx发送20、30、40个并发请求:

可以看到无论并发多少,成功的请求只有12个,成功的次数会多个2个,同时1.2的测试结果中成功次数也是+1,这里是两台机器,基于此种考虑,将机器增加至三台,果然成功的次数为13个。这里得出一个假想,成功的请求数会根据客户端的+1而+1(这里只是假设)

PS:还有很重要的几点。max_conns是针对upstream中的单台server的,不是所有;nginx有个参数:worker_processes,max_conns是针对每个worker_processes的;

附ab工具安装步骤

#ab运行需要依赖apr-util包,安装命令为:
yum install apr-util
#安装依赖 yum-utils中的yumdownload 工具,如果没有找到 yumdownload 命令可以
yum install yum-utils
cd /opt
mkdir abtmp
cd abtmp
yum install yum-utils.noarch
yumdownloader httpd-tools*
rpm2cpio httpd-*.rpm | cpio -idmv
#操作完成后 将会产生一个 usr 目录 ab文件就在这个usr 目录中
#简单使用说明
./ab -c 100 -n 10000 http://127.0.0.1/index.html
#-c 100 即:每次并发100个
#-n 10000 即: 共发送10000个请求

相关推荐

打金赚钱的手游排行榜(打金赚钱的手游排行榜有哪些)

征战龙庭手游可以赚取一定的人民币,但具体收益取决于玩家的游戏水平和投入时间。在游戏中,玩家可以通过完成任务、打怪升级、参加活动等方式获取游戏内货币,用于购买装备和提升实力。同时,玩家也可以通过游戏内商...

云游戏下载(云玩游戏app)

下载云游戏步骤:1、打开一个免费手机游戏下载的网站,从这里进去以后找到自己的手机型号;2、你会看到很多游戏的分类,想玩什么类别的就下什么类别的;3、找到你那个游戏点下载,然后把游戏保存在桌面4、还有...

手机壁纸高级感(苹果手机壁纸高级感)

苹果手机壁纸高级感全屏设置方法如下:1、首先在手机上下载好一张高清图片,然后打开手机设置。2、进入设置页面后,点击点击墙纸佰。3、然后点击选取新墙纸。4、进入页面后,选择所有照片进入。5、接着找到并点...

直播中国女排今晚比赛(直播中国女排今晚比赛cctv5直播中国女排对土耳其女排)

中国女排在10月2日比赛的直播频道会因地区而异。在国内,观众可以通过央视体育频道或各大体育直播平台观看比赛直播。而在海外,观众可以通过国际体育频道或各大体育直播平台观看比赛直播。对于想要观看比赛的粉丝...

qq官方版下载安装(手机版qq免费下载)

这个要在软件商店去安装才可以,因为你设置过在其他城市安装不允许,所有软件必须在应用商店里面安装。程序走对了,没有安装不了的。你的QQ应该是升级成了体验版,体验版QQ需要相应的体验账号,但你的账号不是体...

迅雷云盘app(迅雷云盘官网)

迅雷云盘非常好用,因为迅雷云盘支持HDR原画播放,多分辨率切换流畅丝滑不卡顿,就连极速云播也很顺滑。并且,开通迅雷TV版会员后还能享受会员专属特权,4K原画画质、倍速播放等尽在手中。迅雷云盘空间是一种...

迅雷电影网(迅雷电影天堂)

电影天堂 电影天堂是国内较大的电影下载平台,已有超过100万部影视资源,千万小时时长。电影天堂资源丰富,门类齐全,涵盖电影、电视、综艺、动漫等,几乎所有电影资源都有DVD格式收录。该网站还...

中文 繁体字(数字中文繁体字)

中文-繁体中文拼音[zhōngwén]释义中国的语言文字,特指汉族的语言文字。详细释义中文[zhōngwén]中国语言文字或中国语言文学的省称。特指汉语言文字或汉语言文学。王力《...

万能数据恢复大师手机版(万能数据恢复大师免费版)

个人觉得迷你兔数据恢复软件比较靠谱,恢复能力强。而且有很多人用,我也是朋友推荐的,用过之后,真觉得不错。它有个免费的版本,你可以先试用看看。您好,万能数据恢复大师现在已经更名:失易得数据恢复软件,...

免费最全的小说app有哪些(免费的小说app有哪些好用)

  书旗免费小说是一款以书旗网海量小说为基础的在线阅读器,书旗小说免费阅读集合在线阅读、自动书签、智能搜索、阅读设置等多项人性化功能。(支持WIFI)在书旗小说免费阅读这里你能找到任何类型的热门网络...

chrome安卓版下载(chrome安卓版下载极速)

如果您在手机上使用Chrome浏览器时下载速度较慢,以下是一些可能的解决方法:1.检查并改善网络连接:首先,确保您的手机处于良好的网络连接状态。尝试连接到其他Wi-Fi网络或使用移动数据连接,查看下...

一键制作u盘启动盘(一键制作u盘启动盘,电脑安装系统不求人!)

U盘启动盘的制作过程如下,首先你用U盘制作工具,像大白菜或U盘启动大师将U盘制成启动盘,制作过程中会提示你对U盘进行格式化确认后,可以生成U盘的引导盘和一些制作工具,仅BIOS设置成U盘启动后,在PE...

火影忍者下载(火影忍者下载要多久)

安卓的手机可以去自带的手机商城下载或去浏览器里搜索下载,可以去浏览器里搜索官方,然后从官方的里边下载。或者像别的一些软件,比如应用宝啊,4399小游戏之类的都可以下载,如果是苹果手机的话,那就自求多福...

免费邮箱大全(免费邮箱大全号码大全和密码)

因为我自己工作用的是189邮箱,觉得还不错,所以就推荐给你吧。189邮箱自带15G的云邮容量,邮件附件随意放。而且功能也是蛮多的,像语音输入、日程提醒等,都是很实用的功能,不过我还是最喜欢的它的免密登...

蜘蛛纸牌(蜘蛛纸牌游戏)

玩法是用鼠标单击来玩蜘蛛纸牌,玩法很简单只要每一种类型的按照顺序让A-K连成串就能消去。2.游戏开始时,为500分。以后每移牌或撤销移牌一次,扣一分。当一组同一花色的牌被移除整理到左下方时,加100分...

取消回复欢迎 发表评论: