Rootop 服务器运维与web架构

nginx限制并发连接数及下载带宽

nginx版本:nginx-1.6.2

在早期nginx中为limit_zone,新版本改为limit_conn_zone

编译安装时不需要特定参数,默认就会编译进去。

配置过程:
在nginx.conf中的http{}段里添加:

limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_conn_zone $server_name zone=perserver:10m;

在需要限制并发数和下载带宽的虚拟主机配置文件server{}段里添加:

limit_conn perip 5;
limit_conn perserver 2000;
limit_rate 100k;

参数说明:
$binary_remote_addr  #限制同一客户端ip地址
$server_name #限制同一server最大并发数
limit_conn       #限制并发连接数
limit_rate         #对每个连接(而不是对源ip)限制下载速度kb

limit_conn_zone,是针对每个IP定义一个存储session状态的容器。
这个示例中定义了一个10m的容器,按照32bytes/session,可以处理320000个session。

同一个浏览器下载2个视频测试:

超过最大连接数效果图:

nginx相比apacha下的第三方模块mod_bw要好一些,不过发现现在apache2.4版本中也有了限速模块。
地址:http://httpd.apache.org/docs/2.4/mod/mod_ratelimit.html

提示:

在windows下的nginx中使用此功能会有问题,nginx错误日志信息:

2015/04/03 09:07:25 [emerg] 1840#548: shared zone “perip” has no equal addresses: 02F40000 vs 02FB0000
2015/04/03 09:07:25 [alert] 612#568: worker process 1840 exited with code 1

在nginx官网有解释:http://nginx.org/en/docs/windows.html#known_issues

The cache and other modules which require shared memory support do not work on Windows Vista and later versions due to address space layout randomization being enabled in these Windows versions.

所以此功能不适用于windows下。

原创文章,转载请注明。本文链接地址: https://www.rootop.org/pages/3355.html

作者:Venus

服务器运维与性能优化

评论已关闭。