Nginx(七):Nginx请求限制

连接限制语法

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

default.conf如下

    limit_conn_zone $binary_remote_addr zone=conn_zone:1m;
    limit_req_zone $binary_remote_addr zone=req_zone:1m rate=1r/s;
server {
    listen       80;
    server_name  localhost;

    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;
    }

    error_page   500 502 503 504 404  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

 测试:(安装ab测试工具)

 limit_req zone=req_zone; 结果如下(红色部分效果展示):

根据 limit_req_zone $binary_remote_addr zone=req_zone:1m rate=1r/s;
测试结果正确,放大测试范围结果也OK

Concurrency Level: 100 Time taken for tests: 0.015 seconds Complete requests: 100 Failed requests: 99 (Connect: 0, Receive: 0, Length: 99, Exceptions: 0) Write errors: 0 Non-2xx responses: 99

 

 

 limit_req zone=req_zone burst=3 nodelay 结果如下(红色部分效果展示):

 burst=3 表示最大延迟请求数量不大于3  nodelay  如果太过多的请求被限制延迟是不需要的 ,这时需要使用nodelay参数,服务器会立刻返回503状态码

[root@smoker-linux conf.d]# ab -n 100 -c 100 http://39.105.12.8/index.html
... ...
Server Software: nginx/1.14.0 Server Hostname: 39.105.12.8 Server Port: 80 Document Path: /index.html Document Length: 671 bytes Concurrency Level: 100 Time taken for tests: 0.123 seconds Complete requests: 100 Failed requests: 96 (Connect: 0, Receive: 0, Length: 96, Exceptions: 0) Write errors: 0 Non-2xx responses: 96 Total transferred: 73792 bytes HTML transferred: 54236 bytes Requests per second: 811.64 [#/sec] (mean) Time per request: 123.208 [ms] (mean) Time per request: 1.232 [ms] (mean, across all concurrent requests) Transfer rate: 584.88 [Kbytes/sec] received
... ...

 

 下面这个。。。测试未成功过

 limit_conn conn_zone 1;

limit_conn one 1表示该location段使用one定义的 limit_conn_zone ,对单个IP限制同时存在一个连接

posted @ 2018-07-13 12:02  smokerBig  阅读(107)  评论(0)    收藏  举报