1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| -- 可以通过ngx_http_limit_conn_module模块限制一个IP的并发连接数 -- http { limit_conn_zone $binary_remote_addr zone=ops:10m;
server { listen 80; server_name ops-coffee.cn; access_log /tmp/nginx_access.log main;
root /home/project/webapp; index index.html;
location / { limit_conn ops 10; } } } -- limit_conn_zone: 设定保存各个键(例如$binary_remote_addr)状态的共享内存空间的参数,zone=空间名字:大小 -- -- 大小的计算与变量有关,例如$binary_remote_addr变量的大小对于记录IPV4地址是固定的4 bytes,而记录IPV6地址时固定的16 bytes,存储状态在32位平台中占用32或者64 bytes,在64位平台中占用64 bytes。1m的共享内存空间可以保存大约3.2万个32位的状态,1.6万个64位的状态 -- -- limit_conn: 指定一块已经设定的共享内存空间(例如name为ops的空间),以及每个给定键值的最大连接数 -- -- 上边的例子表示同一IP同一时间只允许10个连接 -- -- 当有多个limit_conn指令被配置时,所有的连接数限制都会生效 -- http { limit_conn_zone $binary_remote_addr zone=ops:10m; limit_conn_zone $server_name zone=coffee:10m;
server { listen 80; server_name ops-coffee.cn;
root /home/project/webapp; index index.html;
location / { limit_conn ops 10; limit_conn coffee 2000; } } } -- 上边的配置不仅会限制单一IP来源的连接数为10,同时也会限制单一虚拟服务器的总连接数为2000 --
|