nginx限制指定IP或请求参数的访问频率

2021-07-22  本文已影响0人  十毛tenmao

当遇到一些IP或用户过量访问时,需要进行针对性的频率限制,比如针对IP或用户信息(比如token)

nginx配置指定IP的频率限制

本机和本地局域网不限制频率,其他IP都限制1r/s

# 1. 使用geo指令,从ip地址映射到0或1。 (不限制的ip映射到1)
geo $whiteList {
    default 0;
    127.0.0.1 1;
    192.168.1.0/24 1;
}
# 2. 在从0和1映射limit_key,1就映射到"",这样在limit_req_zone中使用就不会被限制
map $whiteList $limit_key {
    0 $binary_remote_addr;
    1 "";
}

# 3. 本地IP映射的$limit_key是"",就不会被限制,其他IP都会被限制
limit_req_zone $limit_key zone=allips:10m rate=1r/s;

server {
    listen       80;
    server_name  localhost;
    # 4. 使用频率限制规则allips
    limit_req zone=allips nodelay;
    //其他配置省略
}

针对自定义值的频率限制

limit_req_zone $http_token zone=token:10m rate=1r/s;

server {
    listen       80;
    server_name  localhost;
    limit_req zone=token nodelay;

参考

上一篇 下一篇

猜你喜欢

热点阅读