nginx中的limit_req限速設置配置示例
更新時間:2015年03月26日 10:34:41 投稿:junjie
這篇文章主要介紹了nginx中的limit_req限速設置配置示例,本文直接給出配置文件例子,其中包含大量中文注釋,需要的朋友可以參考下
WIKI:
http://wiki.nginx.org/HttpLimitReqModule
漏桶原理(leaky bucket):
http://en.wikipedia.org/wiki/Leaky_bucket
實例:
#以用戶二進制IP地址,定義三個漏桶,滴落速率1-3req/sec,桶空間1m,1M能保持大約16000個(IP)狀態(tài)
limit_req_zone $binary_remote_addr zone=qps1:1m rate=1r/s;
limit_req_zone $binary_remote_addr zone=qps2:1m rate=2r/s;
limit_req_zone $binary_remote_addr zone=qps3:1m rate=3r/s;
server {
#速率qps=1,峰值burst=5,延遲請求
#嚴格按照漏桶速率qps=1處理每秒請求
#在峰值burst=5以內的并發(fā)請求,會被掛起,延遲處理
#超出請求數(shù)限制則直接返回503
#客戶端只要控制并發(fā)在峰值[burst]內,就不會觸發(fā)limit_req_error_log
# 例1:發(fā)起一個并發(fā)請求=6,拒絕1個,處理1個,進入延遲隊列4個:
#time request refuse sucess delay
#00:01 6 1 1 4
#00:02 0 0 1 3
#00:03 0 0 1 2
#00:04 0 0 1 1
#00:05 0 0 1 0
location /delay {
limit_req zone=qps1 burst=5;
}
#速率qps=1,峰值burst=5,不延遲請求
#加了nodelay之后,漏桶控制一段時長內的平均qps = 漏桶速率,允許瞬時的峰值qps > 漏桶qps
#所以峰值時的最高qps=(brust+qps-1)=5
#請求不會被delay,要么處理,要么直接返回503
#客戶端需要控制qps每秒請求數(shù),才不會觸發(fā)limit_req_error_log
# 例2:每隔5秒發(fā)起一次達到峰值的并發(fā)請求,由于時間段內平均qps=1 所以仍然符合漏桶速率:
#time request refuse sucess
#00:01 5 0 5
#00:05 5 0 5
#00:10 5 0 5
# 例3:連續(xù)每秒發(fā)起并發(fā)請求=5,由于時間段內平均qps>>1,超出的請求被拒絕:
#time request refuse sucess
#00:01 5 0 5
#00:02 5 4 1
#00:03 5 4 1
location /nodelay {
limit_req zone=qps1 burst=5 nodelay;
}
}
相關文章
Nginx $remote_addr和$proxy_add_x_forwarded_for變量的實現(xiàn)
本文主要介紹了Nginx $remote_addr和$proxy_add_x_forwarded_for變量的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-08-08
Nginx解決Http慢攻擊(Slow HTTP Attack)的方法
緩慢的HTTP拒絕服務攻擊是一種專門針對于Web的應用層拒絕服務攻擊,本文給大家介紹了Nginx解決Http慢攻擊(Slow HTTP Attack)的方法,需要的朋友可以參考下2024-02-02
強大的 Web 應?服務器OpenResty安裝(Nginx倉庫)
OpenResty 是?個強大的 Web 應?服務器,Web 開發(fā)?員可以使用 Lua 腳本語?調動 Nginx ?持的各種 C 以及 Lua 模塊,更主要的是在性能方面,OpenResty可以快速構造出足以勝任 10K 以上并發(fā)連接響應的超高性能 Web 應用系統(tǒng)2023-06-06

