nginx 限流學習

2021-10-03 18:57:33 字數 1151 閱讀 2960

在當今流量徒增的網際網路時代,很多業務場景都會涉及到高併發。這個時候介面進行限流是非常有必要的,而限流是nginx最有用的特性之一。

一般情況下,首頁的併發量很大,即使應用了多級快取,使用者不停的重新整理**也是沒有必要的,甚至有些惡意的請求也會對系統造成影響。

其作用可以防止使用者惡意刷爆**,控制併發量。

nginx 主要實現限流的兩個模組:

limit_req_zone $binary_remote_addr zone=myratelimit:

10m rate=

2r/s;

使用:

location /

limit_req還有其他引數,可以使得限流模組優化

對於他的理解就是,bursts定義了乙個佇列,這個佇列有數量限制,=5,就是在當第乙個請求被處理是,接下裡的控制時間(速率定義)內的5個請求可以被儲存在佇列中,如果超過這個佇列就會返回503

帶有burst的配置產生平滑的網路流量,但是不實用,因為該配置會使得你的**表現的很慢。因為在控制時間內(很短)等待的其他請求,可能已經失去了他的意義,不需要再去響應他。而nodelay就是為了解決這個存在

所以bursts一般都是與nodelay一起使用

location /

用來限制同一時間連線數,即併發限制。這與上面的每秒連線次數不同,這個主要針對併發處理。即,當有定的使用者併發請求時,我們可以控制併發個數,拒絕不合理併發量請求

# 根據ip進行限流

# limit_conn_zone $binary_remote_addr zone=addr

:1m;

#儲存個人請求ip的限流容量

# limit_conn_zone $binary_remote_addr zone=perip

:10m;

#整個location對應的請求的併發量配置

# limit_conn_zone $server_name zone=perserver

:10m;

實現

location /brand

Nginx限流設定

hello world成功的必經之路!1.限流演算法 1 令牌限流 演算法思想是 令牌以固定速率產生,並快取到令牌桶中 令牌桶放滿時,多餘的令牌被丟棄 請求要消耗等比例的令牌才能被處理 令牌不夠時,請求被快取。2 漏桶演算法 演算法思想是 水 請求 從上方倒入水桶,從水桶下方流出 被處理 來不及流出...

Nginx限流設定

nginx 提供兩種不同的限流方式,分別為ngx http limit req module,ngx http limit conn module,兩個模組可以搭配使用,其中ngx http limit req module用來限制請求次數,ngx http limit conn module限制併...

nginx限流策略

參考 limit req zone binary remote addr zone mylimit 10m rate 2r s server binary remote addr 表示針對每個ip限流 zone mylimit 10m 表示建立乙個大小為 10m 的名為 mylimit 的記憶體區域...