接数与下载限制并发连速度

gx_http_limit_conn_module模块用于限制每个定义密钥的连接数,特别是来自单个IP地址的连接数。而ngx_http_core_module则可以限制下载速度,这两个均是Nginx内置模块,不需要额外安装。

-1

ngx_http_limit_conn_module限制连接数

#需要写在http段内limit_conn_zone $binary_remote_addr zone=addr:10m;server { location /download/ {         limit_conn addr 10;}
  • $binary_remote_addr : nginx变量,指的是客户端IP
  • zone : 域的名字,随便填写,这里设置的是addr,后面会再次用到
  • 10m : 设置共享内存我的理解是客户端的IP会被放入这个内存中,总共享内存不能超过10M,不知道对不对。
  • limit_conn addr 10 : 限制addr这个域的最大连接数为10

但是在HTTP/2中每个并发请求被视为单独的连接,如果网站启用了HTTP/2上面的设置就没有作用了,可以继续改进一下。以下配置将限制每个客户端IP与服务器的连接数,同时限制与虚拟服务器的连接总数。

#写在http段内limit_conn_zone $binary_remote_addr zone=perip:10m;limit_conn_zone $server_name zone=perserver:10m;server {     ...    #限制perip域(客户端IP)的连接数为10    limit_conn perip 10;    #限制perserver域(当前虚拟服务器)的连接数为100    limit_conn perserver 100;}

更多详细说明可参考Nginx官方文档:http://nginx.org/en/docs/http/ngx_http_limit_conn_module.html

ngx_http_core_module限制下载速度

#数据达到100M后再限制速度(注意:这里指的是单个连接达到100M)limit_rate_after 100M;#限制单个连接速度为10k/slimit_rate 10k;
  • limit_rate_after : 指的是请求的数据达到指定大小后才开始限速(这里设置的是100M)
  • limit_rate : 设置单个连接限速值,这里设置的是10k/s,如果限制同一IP最大连接数为10的话,那么总的下载速度不能超过100k/s

更多说明参考Nginx官方文档:http://nginx.org/en/docs/http/ngx_http_core_module.html#limit_rate

同时限制连接数和下载速度

将上面的配置整合一下,我们既要限制单IP的最大连接数,也需要限制下载速度。

#写在http段内limit_conn_zone $binary_remote_addr zone=perip:10m;limit_conn_zone $server_name zone=perserver:10m;#写在server段内limit_conn perip 10;limit_conn perserver 100;limit_rate_after 100M;limit_rate 10k;

上面配置的含义是限制单个IP最大连接数为10个,同时限制单个虚拟服务器的连接总数为100个。当请求的数据达到100M后(指单个连接达到100M)限制连接速度为为10k/s,如果产生了10个连接,最大速度不能超过100k/s

写在最后

配置修改后建议用nginx -t先检查语法,确保没有问题,别忘记重载Nginx使其生效。

上一篇:大厨教你炒糖色的技巧,掌握这些正确步骤,糖色红亮不发黑不发苦
下一篇:油炸花生米怎么做才酥脆?5步操作,4点技巧,越嚼越香的下酒菜