連接頻率限制 - limit_conn_module
請(qǐng)求頻率限制 - limit_req_module


HTTP協(xié)議的連接與請(qǐng)求
HTTP請(qǐng)求建立在一次TCP連接基礎(chǔ)上
一次TCP請(qǐng)求至少產(chǎn)生一次HTTP請(qǐng)求
連接限制
語(yǔ)法配置
Syntax: limit_conn_zone key zone=name:size;
Default: -
Context:http
Syntax: limit_conn zone number;
Default: -
Context:http,server,location
連接限制
語(yǔ)法配置
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
使用 請(qǐng)求限制
請(qǐng)求限制
這兩個(gè)只能寫(xiě)在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 用戶(hù)ip地址
binanry_remote_addr 同樣是用戶(hù)地址 但是二進(jìn)制 占用空間內(nèi)存更小
rate數(shù)率 一秒一次
zone:空間 大小
ab 工具 多次請(qǐng)求 百度一下
ab -n 50 -c 20 http://xxx/index.html
-n 請(qǐng)求次數(shù)
-c 并發(fā)量
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;; #放首頁(yè)的目錄
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 就是有三個(gè)是延遲響應(yīng) 其他的
nodelay 其他的就直接響應(yīng)
測(cè)試ab -n 20 -c 20 http://xxx/index.html
由于限制了數(shù)率 一秒一次 所以20個(gè)并發(fā) 只有一次能完成
但是有三個(gè)延遲了 所以完成了4個(gè) 其他全部被限制了
連接限制
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;; #放首頁(yè)的目錄
limit_conn conn_zone 1;
index index.html index.htm;
}
}
limit_conn conn_zone 1;
conn_zone 上面的 命名空間
1 同一時(shí)間只允許一個(gè)ip 連接過(guò)來(lái)