小知识:Nginx中IF语句实现数学比较功能

nginx的if支持=、!= 逻辑比较, 但不支持if中 <、<、>=、<= 比较.

本示例使用了set-misc-nginx-module

location = /test/ {

    default_type html;

    set_random $a 0 9;      #$a 随机 从0-9取

    if ( $a <= 4 ){         #$a 如果 < 4 这是错误的写法

        echo a: $a is lte 4;

    }

    if ( $a >= 5 ){         #$a 如果 > 5 这是错误的写法

        echo a: $a is gte 5;

    }

}

上面的配置, 在启动nginx时会报错误的.

即然不支持,那有没有办法小小地弥补下呢?

复制代码代码如下:

location = /test/ {

    default_type html;

    set_random $a 0 9;     #$a 随机 从0-9取

    if ( $a ~ [0-4] ){     #$a 如果 正则匹配 0-4

        echo a: $a is lte 4;

    }

    if ( $a ~ [5-9] ){     #$a 如果 正则匹配 5-9

        echo a: $a is gte 5;

    }

}

测试10次:

复制代码代码如下:

a: 8 is gte 5

a: 9 is gte 5

a: 2 is lte 4

a: 1 is lte 4

a: 8 is gte 5

a: 0 is lte 4

a: 9 is gte 5

a: 1 is lte 4

a: 4 is lte 4

a: 5 is gte 5

附:NGINX竟然不支持这样的写法….

复制代码代码如下:

location = /test/ {

    default_type html;

    set_random $a 0 9;     #$a 随机 从0-9取

    set_random $b 0 9;     #$b 随机 从0-9取

    set $ereg “[0-$b]”;

    if ( $a ~ $ereg ){     #$a 如果 正则匹配 0-$b

        echo a: $a is lte b: $b  ereg: $ereg;

    }

    if ( $a !~ $ereg ){     #$a 如果 正则不匹配 0-$b

        echo a: $a is gt b: $b  ereg: $ereg;

    }

}

求大牛来实现…

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:Nginx和Apache几种防盗链配置方法实例

2023-5-6 23:55:46

建站知识

小知识:Nginx中IF、AND、OR语句用法实例

2023-5-7 1:04:03

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索