Nginx限流配置

2021-09-12 04:30:43 字數 1394 閱讀 1809

nginx限流配置

[編輯]1、限制域宣告

以下配置建議統一在http域中進行配置

#定義乙個名為perip_req的limit_req_zone用來儲存session,大小是10m記憶體,

#以$binary_remote_addr 為key,限制平均每分鐘的請求為30個,

#1m能儲存16000個狀態

#以下配置每個ip每秒限制為5/s

limit_req_zone $binary_remote_addr zone=perip_req:1m rate=5r/s;

#以下配置每個server響應請求限制為3000/s

limit_req_zone $server_name zone=perserver_req:50m rate=3000r/s;

#定義乙個名為perip_conn的limit_zone,大小10m記憶體來儲存session,

#以$binary_remote_addr 為key

#且只能放在http作用域

#以下配置按ip配置乙個連線 zone

limit_conn_zone $binary_remote_addr zone=perip_conn:100m;

#以下配置按server配置乙個連線 zone

limit_conn_zone $server_name zone=perserver_conn:50m;

[編輯]2、請求限制

以下配置在location域中限制

#限制每ip每秒不超過20個請求,漏桶數burst為5

#brust的意思就是,如果第1秒、2,3,4秒請求為19個,

#第5秒的請求為25個是被允許的。

#但是如果你第1秒就25個請求,第2秒超過20的請求返回503錯誤。

#nodelay,如果不設定該選項,嚴格使用平均速率限制請求數,

#第1秒25個請求時,5個請求放到第2秒執行,

#設定nodelay,25個請求將在第1秒執行。

limit_req zone=perip_req burst=5 nodelay;

limit_req zone=perserver_req burst=50 nodelay;

[編輯]3、連線&流量限制

以下配置在location域中限制

#連線數限制,每個ip併發請求為2

limit_conn perip_conn 2;

#服務所限制的連線數(即限制了該server併發連線數量)

limit_conn perserver_conn 1000;

#(附加限制,一般情況不需要考慮) #頻寬限制,對單個連線限數,如果乙個ip兩個連線,就是500x2k

#limit_rate 100k;

[編輯]4、限流配置樣例

檔案:nginx limit conf.zip

nginx限流配置

表示處理請求的平均速度 每個請求之間至少要間隔 1000 60 16.7ms 超出的請求將會進入令牌桶中,例如在10ms內發出5個請求則只有乙個能得到處理,其餘4個會進入令牌桶 令牌桶內的令牌可以滿足這4個額外請求的時候,如果不滿足將會返回503或者自定義的status server locatio...

Nginx搶購限流配置

因業務需求經常會有搶購業務,因此需要在負載均衡前端進行限流錯誤。本文同樣也適用於防止cc.limit req zone server name zone sname 10m rate 1r s 限 務器每秒只能有一次訪問成功 limit req zone binary remote addr zon...

Nginx限流配置記錄

nginx限流配置 nginx限流演算法 令牌桶演算法 令牌以固定速率產生,並快取到令牌桶中 令牌桶放滿時,多餘的令牌被丟棄 請求要消耗等比例的令牌才能被處理 令牌不夠時,請求被快取 漏桶演算法 水 請求 從上方倒入水桶,從水桶下方流出 被處理 來不及流出的水存在水桶中 緩衝 以固定速率流出 水桶滿...