nginx限制单客户端访问速率

可以通过nginx的limit_req zone模块限流,在nginx的主配置文件nginx.conf中新增配置:

geo $limit {

    default 1;

    127.0.0.1 0;

    192.168.1.0/24 0;

}

map $limit $limit_key {

    0 "";

    1 $proxy_add_x_forwarded_for;

}

limit_req_zone $limit_key zone=one:10m rate=20r/s;

$proxy_add_x_forwarded_for,是限制同一客户端ip地址。

zone=one:10m表示生成一个大小为10M,名字为one的内存区域,用来存储访问的频次信息。

rate=20r/s表示允许相同标识的客户端的访问频次,这里限制的是每分钟20次。

在location下增加配置如下:

location / {

proxy_pass http://aaa;

limit_req zone=one burst=500 nodelay; #新增配置

 

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header Connection "Upgrade";

}

reload重新加载配置

nginx -s reload

posted @ 2023-03-02 11:01  fighting-go  阅读(138)  评论(0)    收藏  举报