nginx框架

nginx 请求限制

2018-03-15  本文已影响32人  你常不走的路

连接频率限制 - limit_conn_module
请求频率限制 - limit_req_module


图片.png
图片.png

HTTP协议的连接与请求

HTTP请求建立在一次TCP连接基础上
一次TCP请求至少产生一次HTTP请求

连接限制

语法配置
Syntax: limit_conn_zone key zone=name:size;
Default: -
Context:http

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

连接限制

语法配置
Syntax: limit_req_zone key zone=name:size rate=rate;
Default: -
Context:http

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

使用 请求限制

请求限制
这两个只能写在http中
limit_conn_zone $binanry_remote_addr zone=conn_zone:1m;
limit_req_zone $binanry_remote_addr zone=req_zone:1m rate=1r/s;
remote_addr 用户ip地址
binanry_remote_addr 同样是用户地址 但是二进制 占用空间内存更小
rate数率 一秒一次
zone:空间 大小

ab 工具 多次请求 百度一下

ab -n 50 -c 20 http://xxx/index.html
-n 请求次数
-c 并发量

limit_conn_zone $binanry_remote_addr zone=conn_zone:1m;
limit_req_zone $binanry_remote_addr zone=req_zone:1m rate=1r/s;
server {
        location / {
                root /opt/app/code;;  #放首页的目录
                limit_req zone=req_zone burst=3 nodelay; 
                index   index.html    index.htm;
        }
}

limit_req zone=req_zone burst=3 nodelay;
req_zone 就是上面的命名空间
burst=3 就是有三个是延迟响应 其他的
nodelay 其他的就直接响应
测试ab -n 20 -c 20 http://xxx/index.html
由于限制了数率 一秒一次 所以20个并发 只有一次能完成
但是有三个延迟了 所以完成了4个 其他全部被限制了

连接限制

limit_conn_zone $binanry_remote_addr zone=conn_zone:1m;
limit_req_zone $binanry_remote_addr zone=req_zone:1m rate=1r/s;
server {
        location / {
                root /opt/app/code;;  #放首页的目录
               limit_conn conn_zone 1;
                index   index.html    index.htm;
        }
}

limit_conn conn_zone 1;
conn_zone 上面的 命名空间
1 同一时间只允许一个ip 连接过来

上一篇下一篇

猜你喜欢

热点阅读