cngrit 发表于 2014-07-17 04:44

Nginx中对limit_conn_zone的如下理解对么?

刚开始学习nginx相关知识,看到这个参数,可以限制连接,参考了网上很多的示例,但是都是一个虚拟机的例子,于是我产生了一个问题。
我有一台vps,上面绑定了多个域名。每个域名,我都想单独配置最大访问量,可不可以这样设置limit_conn_zone $binary_remote_addr zone=addr1:10m;
limit_conn_zone $binary_remote_addr zone=addr2:10m;
server {
    server_name www.test1.com;
    limit_conn addr1 10;
}
server {
    server_name www.test2.com;
    limit_conn addr2 20;
}请问这样的配置能不能实现同一时间同一IP 访问 test1 只有10个连接,访问 test2 只有20个连接?

按64位系统中,1mb的内存空间可存放1.6万个状态来算,10mb可以存放16万个状态。
那么上面的意思是不是就可以理解为,同一时间,只能允许16万个ip来访问test1,并且每个ip的并发为10个连接,超过的ip请求或同ip超过第10个连接会被拒绝,然后下一个时间点,比如一秒后,可以有16万个新的ip连接进来(当然后可能包含一部分上一个时间点的重复ip)
麻烦问下这样说对不对。
这个ip空间,是不是当其内存耗尽的时候,最先进来的ip才会流出?如果不是,那这个limit_conn 后面的参数,是这个ip的并发,而不是总量吧。比如一个极端的情况:这个域名只有一个用户访问,一开始并发了8个链接,过了一会,他又并发了8个链接,这时候,ip空间里,只有这一个ip,但是访问连接有了16个,并发都没有突破10个,这样的访问可以正常访问并不会遭到拒绝吧。

然后,如果改成如下limit_conn_zone $binary_remote_addr zone=addr:10m;
server {
    server_name www.test1.com;
    limit_conn addr 10;
}
server {
    server_name www.test2.com;
    limit_conn addr 20;
}是不是可以理解为共用一个ip内存空间?这样设置可以吗?
即两个域名并发访问总量为16万个ip,第一个域名单ip并发为10个链接,第二个域名单ip并发为20个链接?

麻烦知道的童鞋说说啊,谢谢了。

q1208c 发表于 2014-07-17 09:42

自己试一下不就知道了

cngrit 发表于 2014-07-17 21:25

q1208c 发表于 2014-07-17 09:42 static/image/common/back.gif
自己试一下不就知道了

这么大的并发量没法试啊,而且要ip不一样。。。。不然怎么出结果 。。。。。

q1208c 发表于 2014-07-18 08:22

回复 3# cngrit

你把并发的数字改小, 比如2次, 用同一个IP来试, 如果你不能并发出第三个访问, 就是OK的.

其实有三个IP就足够了.


   

cngrit 发表于 2014-07-25 00:00

q1208c 发表于 2014-07-18 08:22 static/image/common/back.gif
回复 3# cngrit

你把并发的数字改小, 比如2次, 用同一个IP来试, 如果你不能并发出第三个访问, 就是OK的 ...

嗯,谢谢提醒。
页: [1]
查看完整版本: Nginx中对limit_conn_zone的如下理解对么?