| 12
 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 --
 
 |