Nginx搶購限流配置

2021-09-27 05:51:33 字數 1087 閱讀 1914

因業務需求經常會有搶購業務,因此需要在負載均衡前端進行限流錯誤。本文同樣也適用於防止cc.

limit_req_zone $server_name zone=sname:10m rate=1r/s;               #限**務器每秒只能有一次訪問成功

#limit_req_zone $binary_remote_addr zone=one:3m rate=1r/s; #限制ip,每秒只能訪問一次

#limit_req_zone $binary_remote_addr$uri zone=two:3m rate=1r/s; #限制ip和路徑不帶引數,

#limit_req_zone $binary_remote_addr$request_uri zone=thre:3m rate=1r/s; #限制ip和帶引數的路徑

server

location /api/createorder

location = /50x.html ,"code": -1}'; #設定移動端返回錯誤的資訊顯示

}root html; #如果是pc端返回乙個html頁面

}}

重點: 正常情況下,如果設定了限流,返回是503的狀態碼,這對於移動端來說即便是你返回json資料但是客戶端時不認的,這個時候巧妙的通過 error_page 403 =200 /50x.html;將狀態碼設定為200

以上只是使用了ngx_limit_req_module,同時也可以使用ngx_limit_conn_module模組。

以上參考:

特別是一些諮詢類**如果備爬蟲盯上,伺服器可能會被爬蟲給幹死(小**就是這樣)

那麼怎麼辦呢,我們可以使用變數去做

#全域性配置

limit_req_zone $spider zone=spider:60m rate=200r/m; #限制爬蟲每分鐘只能跑200次

#某個server中

Nginx限流配置

nginx限流配置 編輯 1 限制域宣告 以下配置建議統一在http域中進行配置 定義乙個名為perip req的limit req zone用來儲存session,大小是10m記憶體,以 binary remote addr 為key,限制平均每分鐘的請求為30個,1m能儲存16000個狀態 以下...

nginx限流配置

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

Nginx限流配置記錄

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