美文网首页
nginx限制指定IP或请求参数的访问频率

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

作者: 十毛tenmao | 来源:发表于2021-07-22 09:43 被阅读0次

    当遇到一些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;
        //其他配置省略
    }
    
    • geo指令: 可以从ip地址映射到对应的值
    • map指令: 值映射

    针对自定义值的频率限制

    • 使用http_XXX读取header中的值,比如http_token会读取header中的token的值
    limit_req_zone $http_token zone=token:10m rate=1r/s;
    
    server {
        listen       80;
        server_name  localhost;
        limit_req zone=token nodelay;
    

    参考

    相关文章

      网友评论

          本文标题:nginx限制指定IP或请求参数的访问频率

          本文链接:https://www.haomeiwen.com/subject/cjjemltx.html