http { limit_conn_zone $binary_remote_addr zone=addr:10m; ... 服务器 { ... 位置/下载/ { limit_conn addr 1; }
step1:定义请求限制空间
limit_conn_zone $binary_remote_addr zone=mylimit:10m
1. $binary_remote_addr,表明是以remote_addr为限制目标,加上binary是为了压缩内存占用空间
remote_add记录的是ip地址信息,如:“192.168.1.222”会占用7到15个字节,
而如果用binary_remote_addr只会占用4个字节。
就相当于不同的表示方式,一个全程一个缩写的表示。
2. zone=name:size,分配一个以name为名的并且大小为size的内存空间,用来存储访问的频次信息
1M能存储16000 IP地址的访问信息,10M可以存储16W IP地址访问信息。
当超过此限制时,服务器将返回 错误 以响应请求。
说的有点笼统,如果我们要限制服务器并发为300,单IP并发为25,那么可以下面这样设置:
limit_conn_zone $binary_remote_addr zone=perip:10m; limit_conn_zone $server_name zone=perserver:10m; limit_conn perserver 300; limit_conn perip 25;