• nginxif多条件结合判断(实现限速)


    参考文章:

    https://yq.aliyun.com/articles/44957

    需求: 要对某一ip下,使用android客户端的用户进行限速

    原理 就是用SET变量进行。 AND 就用变量叠加,OR就用0或1切换。 nginx的配置中不支持if条件的逻辑与/逻辑或运算 ,并且不支持if的嵌套语法,我们可以用变量的方式来实现

    需要两个变量:test1,test2

    test1 变量是为了 if条件使用,,test2是最后满足条件后 给 limit配置用

    配置需要自己加入到nginx中

    http配置中配置:
    
    limit_req_zone $test2 zone=anti_spider:1m rate=1r/s;
    
    server配置中配置
    
    set $test1 "";
    
    if ( $remote_addr ~ "(0.0.0.1)" )  {
                    set $test1 "Y";
            }
    
            if ($http_user_agent ~* "android") {
                    set $test1 "${test1}Y";
            }
    
            if ($test1 = "YY"){
                    set $test2  $http_user_agent;
            #       return 404;
            }
            limit_req zone=anti_spider burst=1 nodelay;

    其他:

    一、if语句中的判断条件(nginx)介绍

    1、正则表达式匹配:

          ==:等值比较;

          ~:与指定正则表达式模式匹配时返回“真”,判断匹配与否时区分字符大小写;

          ~*:与指定正则表达式模式匹配时返回“真”,判断匹配与否时不区分字符大小写;

          !~:与指定正则表达式模式不匹配时返回“真”,判断匹配与否时区分字符大小写;

          !~*:与指定正则表达式模式不匹配时返回“真”,判断匹配与否时不区分字符大小写;

    2、文件及目录匹配判断:

          -f, !-f:判断指定的路径是否为存在且为文件;

          -d, !-d:判断指定的路径是否为存在且为目录;

          -e, !-e:判断指定的路径是否存在,文件或目录均可;

          -x, !-x:判断指定路径的文件是否存在且可执行;

  • 相关阅读:
    芯片产品介绍
    稀疏矩阵理论与实践
    EUV极紫外光刻技术
    国内AI与芯片企业列表
    中国软件外包现状对比
    GPU指令集技术分析
    寒武纪智能系统参数
    TVM量化路线图roadmap
    EUV光刻机市场与技术
    轻松部署 .NET 5 应用程序,这个指南一定不要错过
  • 原文地址:https://www.cnblogs.com/jackchen001/p/8360045.html
Copyright © 2020-2023  润新知