Nginx官方版本限制IP的连接和限制并发两个模块:
- limit_req_zone 用来限制单位时间内的请求数,即速率限制,采用的漏桶算法 “leaky bucket”。
limit_conn_zone 用来限制同一时间连接数,即并发限制。
limit_req_zone
```nginx http { limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
…
server {
...location /search/ {limit_req zone=one burst=5;}
Syntax: limit_req zone=name [burst=number] [nodelay | delay=number];<br />Default: —<br />Context: http, server, location<a name="NsyvG"></a>### limit_conn_zone这个模块用来限制单个IP的请求数。并非所有的连接都被计数。只有在服务器处理了请求并且已经读取了整个请求头时,连接才被计数。```nginxhttp {limit_conn_zone $binary_remote_addr zone=addr:10m;...server {...location /download/ {limit_conn addr 1;}
Syntax:**limit_conn**zone`_number_;<br />Default:—Context:http,server,location`
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;}
Syntax: limit_conn_dry_run on | off;
Default:
limit_conn_dry_run off;
Context: http, server, location
