Nginx 의 흐름 제한 방안
추첨 인 터 페 이 스 는 높 은 병행 지연 시스템 이 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("{\"success\" : true,\"data\" : {\"awardType\" : \"00\" }}")
ngx.log(ngx.ERR,"draw limit val is:"..val)
return ngx.exit(200)
end
return
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);
end
return
end
nginx 설정
init_by_lua_file /etc/nginx/init_r.lua;
location / {
default_type application/json;
rewrite_by_lua_file /etc/nginx/draw_r.lua;
log_by_lua_file /etc/nginx/draw_decr.lua;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Neovim을 위한 자동 완성NeoVim으로 생산성을 높일 수 있는 가장 멋진 기능 중 하나는 자동 완성이므로 성능에 따라 플러그인을 선택할 수 있습니다. YouCompleteMe Coc.nvim 이 플러그인은 사용하기 좋지만 Javascrip...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.