nginx 限流

ngx_http_limit_conn_module 限制并发.

官网地址:https://nginx.org/en/docs/http/ngx_http_limit_conn_module.html

http{
    limit_conn_zone $binary_remote_addr zone=connip:20m;
    limit_conn_log_level info; 日志级别记录
    limit_conn_status 429; #被拒绝时的状态码

    server {
        ...
        location / {
            limit_conn perip 10; #每个客户端IP的最大连接数,超过返回错误状态码
        }
    }
}                    

  

ngx_http_limit_req_module 限制访问频率

官网地址:https://nginx.org/en/docs/http/ngx_http_limit_req_module.html

http{
    limit_req_zone $binary_remote_addr zone=reqip:20m rate=3r/s; #根据请求IP来判断,请求速率每秒不可超过5次
    limit_req_status 429; #被拒绝时的状态码
    limit_req_log_level info;

    server {
    ...
        location {
            limit_req zone=perip burst=6;# 平均每秒不超过5个,超过5个会延迟,超过10个返回503错误
        }
    }
}

  

ngx_http_core_module。 限制下载

http {
server{
limit_rate_after 1000k;
limit_rate 50k; #超过1000k之后的部分开始限速,限限制速率为50k字节每秒,限制nginx与客户端
}
}

 

conf文件配置

http {
  limit_conn_zone $binary_remote_addr zone=conn:10m;
  limit_conn_log_level error;
  limit_conn_status 429;

  limit_req_zone $binary_remote_addr zone=req:10m rate=25r/s;
  limit_req_log_level error;
  limit_req_status 429;
  ...
  server {
    limit_conn conn 15;
    limit_req zone=req burst=3 nodelay;
    limit_rate_after 1500k;
    limit_rate 100k;
  }
}

  

测试命令:

 ab -n 100 -c 20 https://url/

posted @ 2021-07-21 15:42  刘六六LHR  阅读(75)  评论(0)    收藏  举报