nginx控制客户服务端并发数量,客户端请求速率,下载速率
在nginx.conf里的http{}里加上如下代码:
# ip limit(访问ip限制)
limit_conn_zone $binary_remote_addr zone=perip:10m;
# server limit
limit_conn_zone $server_name zone=perserver:10m;
# 客户端请求Nginx的速率设置,请求客户端以IP为key值,内存区域名为req_one,访问速率限制为每秒一个请求
limit_req_zone $binary_remote_addr zone=req_one:10m rate=1r/s;
在需要限制并发数和下载带宽的网站配置
server{}里加上如下代码:
# 每个IP并发连接数为2
limit_conn perip 2;
# 每个主机的最大并发数为20
limit_conn perserver 20;
# 开始不限速,在下载量达到100M后,限速为下边的值
limit_rate_after 100M;
# 下载速率为100k
limit_rate 100k;
# 客户端请求Nginx的速率设置,使用前面定义的名为req_one,队列值为5,即可以有5个排队等待
limit_req zone=req_one burst=5;
解释:
$binary_remote_addr是限制同一客户端ip地址;
$server_name是限制同一server最大并发数;
limit_conn为限制并发连接数;
limit_rate为限制下载速度;
limit_rate_after为设置一个值在达到该值后,limit_rate限制值才可以生效
limit_req为限制客户端的请求速率
Example:
# ip limit(访问ip限制)
limit_conn_zone $binary_remote_addr zone=perip:10m;
# 客户端请求Nginx的速率设置,请求客户端以IP为key值,内存区域名为req_one,访问速率限制为每秒一个请求
limit_req_zone $binary_remote_addr zone=req_one:10m rate=60r/s;
server {
listen 80 default_server;
server_name download.wwe.cn;
access_log off;
error_log off;
root /download;
# 每个IP并发连接数为10
limit_conn perip 10;
# 开始不限速,在下载量达到100M后,限速为下边的值
limit_rate_after 150M;
# 下载速率为100k
limit_rate 100k;
# 客户端请求Nginx的速率设置,使用前面定义的名为req_one,队列值为5,即可以有5个排队等待
limit_req zone=req_one burst=5;
location / {
if ($request_filename ~* ^.*?\.(txt|doc|pdf|rar|gz|zip|docx|exe|xlsx|ppt|pptx)$)
{
add_header Content-Disposition: 'attachment;';
}
}
}