nginx限流配置

10 篇文章 0 订阅

环境ubuntu 20.04

限流包括限制并发数以及限制连接频率

限制并发数

涉及的参数为以下两个:

  • limit_conn_zone
  • limit_conn

其中limit_conn_zone只能出现在http全局块中
例:

# /etc/nginx/nginx.conf
http {
	...
	limit_conn_zone $binary_remote_addr zone=addr:10m;
	...
}

说明:设置一个10m的容器,按照32bytes/session, 可以处理320000个session

# /etc/nginx/sites-enabled/default
server {
	...
    location / {
    	...
    	limit_conn addr 1;
		...
    }
}

说明:限制每个IP只能发起一个并发连接

参考:http://nginx.org/en/docs/http/ngx_http_limit_conn_module.html

限制连接频率

涉及的参数为以下两个:

  • limit_req_zone
  • limit_req

其中limit_req_zone只能出现在http全局块中
例:

# /etc/nginx/nginx.conf
http {
	...
	limit_req_zone  $binary_remote_addr zone=one:10m rate=5r/s;
	...
}

说明:限制了每秒只接受某个ip 5次每秒的请求频率。

server {
	...
    location / {
    	...
    	limit_req zone=one burst=5;		
    	...
    }
}

说明:burst参数为超过频率限制的最大ip数量,如果超出burst,则其他ip再超出频率就直接返回503

参考:http://nginx.org/en/docs/http/ngx_http_limit_req_module.html

测试

代码地址:https://github.com/MacwinWin/nginx_testing/tree/main/2021-03-26
使用go-stress-testing进行压测

>>> ./go-stress-testing-mac -c 7 -n 2 -H 'X-Signature: 123' -H 'X-DeliverId: 123' -u 'http://127.0.0.1:4000/pid/1/production_page'

在这里插入图片描述
可以看到成功数最多为5,其余的返回503

参考:
https://blog.csdn.net/hellow__world/article/details/78658041
https://webcache.googleusercontent.com/search?q=cache:eck2kMAqXzsJ:https://www.cnblogs.com/pengyunjing/p/10662612.html+&cd=2&hl=zh-CN&ct=clnk
https://segmentfault.com/a/1190000004688125

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值