Nginx一種限流方案

2021-09-18 00:07:55 字數 991 閱讀 3147

**介面為了防止高併發拖累系統 通過nginx來限流 如最多同時允許100個使用者進來** 超過100個則預設返回未中獎

lua **

# init_r.lua

local shared_data = ngx.shared.dict

shared_data:set("draw", 0)

# draw_r.lua

local request_uri = ngx.var.request_uri;

if string.sub(request_uri,1,22) == "/activity/lottery/draw" then

local val, err = ngx.shared.dict:incr("draw", 1); #進來乙個乙個請求就加1

if val > 100 then #限流100

ngx.say("}")

ngx.log(ngx.err,"draw limit val is:"..val)

return ngx.exit(200)

endreturn

end# draw_decr.lua

local request_uri = ngx.var.request_uri;

if string.sub(request_uri,1,22) == "/activity/lottery/draw" then

local newval, err = ngx.shared.dict:incr("draw", -1); #乙個請求完成就減一

if newval < 0 then

ngx.shared.dict:set("draw", 0);

endreturn

end

nginx中配置

init_by_lua_file /etc/nginx/init_r.lua;

location /

nginx限流方案的實現 三種方式

一般對外暴露的系統,在 或者黑客攻擊時會湧來大量的請求,為了保護系統不被瞬間到來的高併發流量給打垮,就需要限流,這篇文章主要介紹了nginx限流方案的實現,非常具有實用價值,需要的朋友可以參考下 通過檢視nginx官方文件,小弟檢視到了三種nginx限流方式。前兩種只能對客戶端 即單一ip限流 並且...

三種nginx限流方式

通過檢視nginx官方文件,小弟檢視到了三種nginx限流方式。前兩種只能對客戶端 即單一ip限流 並且文件也很全,但是經過測試發現,還是無法達到官方文件所說的結果 可能小弟的測試方法有問題 這裡先簡單的介紹一下前兩種 1 limit conn zone 1.1nginx配置 其中 limit co...

一種硬體加密卡方案

本方案是基於fpga的高效能加密卡。加密 過pci express匯流排與主機通訊,由fpga晶元內建的nios ii軟和處理器和pci e硬核分別實現控制模組和通訊模組的功能 採用sm1 rsa des 3des desx或aes等演算法 具體演算法未定 對資料進行加密或解密。使用外接單匯流排加密...