您的当前位置:首页正文

Nginx流量控制插件

来源:华拓网

Nginx流量控制插件

版本号: V_0.1

说明

基于lua的流量控制,原理是统计IP+URI的个数,在配置的时间内超过配置个数,即拒绝请求。

配置

1、使用openresty或nginx集成lua的环境。

参考文档[Nginx集成lua环境的配置以及openresty环境安装]

软件下载地址请点击[download]

2、修改nginx.conf

nginx.conf第一行添加

user root root;

如果nginx的worker_process不是root,可能会发生请求404的情形。

lua_shared_dict limit 20m;

access_by_lua_file "conf/access_rate_limit.lua";

    server {
        listen       80;
        location / {
            access_by_lua_file "conf/access_rate_limit.lua";
            root   html;
            index  index.html index.htm;
        }
    }

3、修改默认比率

vim access_rate_limit.lua
local config_rate = "20/1"

20/1表示同一个IP+URI在1s内允许通过20次,可以根据需求调整。

生效及取消

配置完成后reload nginx即可生效。

/usr/local/nginx/sbin/nginx -s reload

2018/11/02 14:50:06 [info] 20634#20634: *3938 [lua] test_rate_limit.lua:35: cc_attack_check():  rate_limit:  uri: 192.166.62.104/index.html limit: 21, client: 192.166.62.104, server: localhost, request: "GET /index.html HTTP/1.0", host: "192.166.62.136"
2018/11/02 14:50:06 [info] 20635#20635: *3939 [lua] test_rate_limit.lua:35: cc_attack_check():  rate_limit:  uri: 192.166.62.104/index.html limit: 21, client: 192.166.62.104, server: localhost, request: "GET /index.html HTTP/1.0", host: "192.166.62.136"

取消生效只需在nginx.conf中注释

# access_by_lua_file "conf/access_rate_limit.lua";

并reload nginx即可。

风险

如果比率设置过低,可能会影响正常请求。