openresty 흐름 제한 (redis + lua) 메모
2266 단어 nginx
/ usr / openv / server / lualib / restylimit 디 렉 터 리 에 압축 을 풀 었 습 니 다.server 는 openresty 를 위해 디 렉 터 리 를 설치 합 니 다.
/ usr / openv / server / nginx / conf / lua 디 렉 터 리
새 limit. lua
local limit_req = require "resty.limit.req"
local redis = require "resty.redis"
local instance = redis.new();
instance.connect(instance,'127.0.0.1','6379')
local rate =tonumber(instance:get("limitrate"))
local burst =tonumber(instance:get("limitburst"))
--local rate=3 redis rate=3
--local burst =10
local error_status = 503
local nodelay = false
local lim, err = limit_req.new("limit_req_store", rate, burst)
if not lim then
ngx.exit(error_status)
end
local key = ngx.var.binary_remote_addr
local delay, err = lim:incoming(key, true)
if not delay and err == "rejected" then
ngx.exit(error_status)
end
if delay > 0 then
if nodelay then
else
ngx.sleep(delay)
end
end
/usr/openv/servers/nginx/conf
lua.conf
server {
listen 80;
server_name _;
location /limit {
access_by_lua_file conf/lua/limit.lua;
default_type 'text/html';
lua_code_cache off;
content_by_lua 'ngx.say("hello world")';
# proxy_pass http://proxy/_cat/master;
# proxy_redirect off;
# proxy_set_header Host $http_host;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header Cookie $http_cookie;
}
}
/usr/openv/servers/nginx/conf
nginx. conf 에서 증가:
http {
include mime.types;
include lua.conf;
default_type application/octet-stream;
lua_package_path "/usr/servers/lualib/?.lua;;";
lua_package_cpath "/usr/servers/lualib/?.so;;";
lua_shared_dict limit_req_store 10m;
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
간단! Certbot을 사용하여 웹 사이트를 SSL(HTTPS)화하는 방법초보자가 인프라 주위를 정돈하는 것은 매우 어렵습니다. 이번은 사이트를 간단하게 SSL화(HTTP에서 HTTPS통신)로 변경하는 방법을 소개합니다! 이번에는 소프트웨어 시스템 Nginx CentOS7 의 환경에서 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.