nginx限流策略
阿新 • • 發佈:2022-04-20
參考:https://www.cnblogs.com/biglittleant/p/8979915.html
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=2r/s; server { location / { limit_req zone=mylimit burst=4 nodelay; limit_req_status 503; } }
$binary_remote_addr 表示針對每個IP限流
zone=mylimit:10m 表示建立一個大小為 10m 的名為 mylimit 的記憶體區域用來存放堆積的請求佇列
rate=2r/s 表示每秒限制併發為2個請求
limit_req zone=mylimit burst=4 nodelay; 表示處理 mylimit 的請求佇列, burst=4 表示2個併發堆滿了之後會把請求放請求 mylimit 佇列, nodelay 表示進入請求佇列的請求也會被立即執行
limit_req_status (此行可選)為超出併發佇列的請求返回的自定義http狀態碼
burst=4和nodelay為可選引數,寫nodelay時必須寫burst,寫burst時不必寫nodelay。
不加nodelay請求佇列中請求會排隊等待執行,此時併發限制死為burst。
加上nodelay表示佇列中請求也會被立即執行,超出burst的請求會直接被拒絕,此模式可理解為nginx允許臨時突破併發量到burst值。(上述示例表示併發限制為2,可以臨時突破到4,超過4的直接返回503)