美文网首页
Nginx基础四(Nginx的请求限制和连接限制)

Nginx基础四(Nginx的请求限制和连接限制)

作者: candy252324 | 来源:发表于2018-08-21 13:22 被阅读0次

    一、语法

    • limit_conn_module 连接频率限制模块
    • limit_req_module 请求频率限制模块

    (1) 连接限制语法

    Syntax:limit_conn_zone key zone=name:size;
    Default: --
    Context: http

    Syntax:limit_conn zone number;
    Default:--
    Context:http,server,location

    (2) 请求限制语法

    Syntax:limit_req_zone key zone=name:size rate=rate;
    Default: --
    Context: http

    Syntax:limit_req zone=name [burst=numaber] [nodelay];
    Default:--
    Context: http,server,location

    二、未对请求和连接做限制的压力测试

    (1)yum install -y ab 安装压力测试工具ab
    (2)ab -n 50 -c 20 http://192.168.122.1/test.html 手动压力测试,总共发起50个请求,并发数为20

    以下为无任何配置下的压力测试结果,测试结果含义可参考这篇文章

    测试结果.png

    三、对请求和连接做限制的压力测试

    (1)vi /etc/nginx/conf.d/default.conf 打开 default.conf 文件并添加配置

    default.conf.png

    limit_conn_zone $binary_remote_addr zone=conn_zone:1m;

    释意 : $binary_remote_addrremote_addr 都是指客户端地址,但是存储remote_addr比存储$binary_remote_addr 会多十个字节,一个会话多十个字节,成千上万个会话就需要多出很多空间,故而使用$binary_remote_addr
    1m指的是:申请的空间大小为1M

    limit_req_zone $binary_remote_addr zone=req_zone:1m rate=1r/s;

    释意 :对于同一个remote_addr(客户端地址)过来的请求,限制每秒只允许发起一个请求

    limit_conn conn_zone 1

    释意 :连接限制,同一时刻,只允许一个ip连接

    limit_req zone=req_zone burst=3 nodelay

    释意 :请求限制, burst=3 ,客户端超过了指定的请求速率后,遗留的三个请求释放到下一秒执行(即对客户端延迟响应), nodelay:除了这3个请求外,其它超出的直接返回503(503:由于超载或停机维护,服务器目前无法使用)

    (2)接下来,可将四条注释逐一取消进行测试
    以下为请求限制的测试:

    limit_conn_zone $binary_remote_addr zone=conn_zone:1m;
    limit_req_zone $binary_remote_addr zone=req_zone:1m rate=1r/s;
    ...
    location / {
      root /opt/app/code;
      # limit_conn conn_zone 1;
      # limit_req zone=req_zone burst=3 nodelay;
      # limit_req zone=req_zone burst=3;
      limit_req zone=req_zone;
      index index.html index.htm;
    }
    ...
    

    查看错误日志 tail -f /var/log/nginx/error.log

    错误日志.png

    相关文章

      网友评论

          本文标题:Nginx基础四(Nginx的请求限制和连接限制)

          本文链接:https://www.haomeiwen.com/subject/xlzzbftx.html