1. 程式人生 > 其它 >nginx限流策略

nginx限流策略

參考: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)