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';
}
}
求大牛来实现...
相关推荐
-
Nginx中IF、AND、OR语句用法实例
在上一篇文章:<Nginx if语句加正则表达式实现字符串截断>中, 我们介绍过了使用if来进行截断字符串的用法, 这次我们来了解下if的逻辑用法: 什么是逻辑用法呢, 就程序中的and.or关系, 就叫做逻辑了. NGINX支持if的 and 与 or 或者 && 与 || 吗? 答案是No. 当你尝试这样配置, 重载nginx时, nginx会报出错误 复制代码 代码如下: location = /test/ { default_type text/html
-
nginx+rsync+inotify实现负载均衡配置方法
实验环境 前端nginx:ip 192.168.6.242,对后端的wordpress网站做反向代理实现复杂均衡 后端nginx:ip 192.168.6.36,192.168.6.205都部署wordpress,并使用相同的数据库 1.在后端的两个wordpress上配置rsync+inotify,两服务器都开启rsync服务,并且通过inotify分别向对方同步数据 下面配置192.168.6.205这台服务器 vim /etc/rsyncd.conf uid = nginx gid = n
-
PHP、Nginx、Apache中禁止网页被iframe引用的方法
可以使用php或nginx等添加X-Frame-Options header来控制frame权限X-Frame-Options有三个可选的值: DENY:浏览器拒绝当前页面加载任何Frame页面SAMEORIGIN:frame页面的地址只能为同源域名下的页面ALLOW-FROM:允许frame加载的页面地址 PHP代码: 复制代码 代码如下: header('X-Frame-Options:Deny'); Nginx配置: 复制代码 代码如下: add_header X-Frame-Option
-
Nginx实现if多重判断配置方法示例
nginx的配置中不支持if条件的逻辑与/逻辑或运算 ,并且不支持if的嵌套语法,我们可以用变量的方式来实现: 首先是伪代码(即不被nginx支持),写在这里只是为了方便理解: 复制代码 代码如下: if ($remote_addr ~ "^(12.34|56.78)" && $http_user_agent ~* "spider") { return 403; } 下面这是等效的,并真实可用的配置 复制代码 代码如下: set $flag
-
Nginx if语句加正则表达式实现字符串截断
在给大家讲述这个问题之前,先给大家看一段nginx配置. 我们用到了 set-misc-nginx-module 复制代码 代码如下: location /test/ { default_type text/html; set_md5 $hash "secret"$remote_addr; echo $hash; } 这样输出来的内容,可能是下面这样的 复制代码 代码如下: 202cb962ac59075b964b07152d234b70 但如果我们要截取某几位
-
Nginx中if语句的判断条件与多条件判断详解
一.if语句中的判断条件(nginx)介绍 1.正则表达式匹配: ==:等值比较; ~:与指定正则表达式模式匹配时返回"真",判断匹配与否时区分字符大小写: ~*:与指定正则表达式模式匹配时返回"真",判断匹配与否时不区分字符大小写: !~:与指定正则表达式模式不匹配时返回"真",判断匹配与否时区分字符大小写: !~*:与指定正则表达式模式不匹配时返回"真",判断匹配与否时不区分字符大小写: 2.文件及目录匹配判断: -f,
-
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 l
-
MySql中sql语句执行过程详细讲解
目录 前言: sql语句的执行过程: 查询缓存: 分析器: 优化器: 执行器: 总结 前言: 很多人都在使用mysql数据库,但是很少有人能够说出来整个sql语句的执行过程是怎样的,如果不了解执行过程的话,就很难进行sql语句的优化处理,也很难设计出来优良的数据库表结构.这篇文章主要是讲解一下sql语句的执行过程. sql语句的执行过程: 客户端.连接器.分析器.优化器.执行器.存储引擎几个阶段. 连接器的作用:管理链接.权限验证的处理. 分析器的作用:词法分析.语法分析. 优化器的作用:执行计
-
seajs中最常用的7个功能、配置示例
本文实例讲述了seajs中最常用的7个功能.配置.分享给大家供大家参考,具体如下: 1. seajs.config seajs.config({ // 设置路径,方便跨项目调用 paths: { 'path1': '....', 'path2': '....' }, // 设置别名,方便调用 alias: { 'class1': '...', 'class2': '...' } }); 2. seajs.use 用来在页面中加载一个或多个模块 // 加载一个模块 seajs.use('./a')
-
JavaScript基于DOM操作实现简单的数学运算功能示例
本文实例讲述了JavaScript基于DOM操作实现简单的数学运算功能.分享给大家供大家参考,具体如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"
-
详解Python中with语句的用法
引言 with 语句是从 Python 2.5 开始引入的一种与异常处理相关的功能(2.5 版本中要通过 from __future__ import with_statement 导入后才可以使用),从 2.6 版本开始缺省可用(参考 What's new in Python 2.6? 中 with 语句相关部分介绍).with 语句适用于对资源进行访问的场合,确保不管使用过程中是否发生异常都会执行必要的"清理"操作,释放资源,比如文件使用后自动关闭.线程中锁的自动获取和释放等. 术
-
在varnish、squid、apache、nginx中选出一个更好的缓存服务器
一.varnish.squid.apache.nginx的区别 1.从这些功能上.varnish和squid是专业的cache服务,而apache,nginx这些都是第三方模块完成. 2.要做cache服务的话,我们肯定是要选择专业的cache服务,优先选择squid和varnish. varnish本身的技术上优势要高于squid,它采用了"Visual Page Cache"技术,在内存的利用上,Varnish比Squid具有优势,它避免了Squid频繁在内存.磁盘中交换文件,性能
-
HTML中使用python屏蔽一些基本功能的方法
进行数据解析的理由不计其数,相关的工具和技巧也同样如此.但是,当您需要用这些数据做一些新的事情时,即使有"合适的"工具可能也是不够的.这一担心对于异类数据源的集成同样存在.用来做这项工作的合适工具迟早应该是一种编程语言. Oracle 提供了一些非常强大的实用程序来加载.处理和卸载数据.SQL*Loader.Data Pump.外部表.Oracle Text.正则表达式都能提供这些功能.然而人们常常会需要在数据库外做一些事情(或者,说得琐碎些,可能您还没有获得必要的数据库权限). 利用
-
Bootstrap Table中的多选框删除功能
先上代码,后面再进行详细解释: //删除按钮事件 $("#remove").on("click", function () { // $("#table").bootstrapTable('getSelections');为bootstrapTable自带的,所以说一定要使用bootstrapTable显示表格,#table:为table的id var rows = $("#table").bootstrapTable('ge
-
了解JavaScript中let语句
使用let语句,允许你在JavaScript中创建块范围局部变量.let语句是在JavaScript的ECMAScript 6标准中引入的. 在你往下了解let语句之前,我建议你先查看基于Infragistics jQuery库的Ignite UI,它可以帮助你更快地编写和运行Web应用程序.你可以使用JavaScript库的Ignite UI来快速解决HTML5,jQuery,Angular,React或ASP.NET MVC中复杂的LOB需求.(你可以在这里下载Ignite UI的免费试用版
随机推荐
- 使用php批量删除数据库下所有前缀为prefix_的表
- JavaBean(EJB) 3.0 全新体验
- AngularJS点击添加样式、点击变色设置的实例代码
- 正则验证不能含有中文的实现方法【jQuery与java实现】
- windows2008系统中rsync计划任务返回0x1问题处理
- JavaScript之DOM插入更新删除_动力节点Java学院整理
- 解决js页面滚动效果scrollTop在FireFox与Chrome浏览器间的兼容问题的方法
- 引用母版页后在page页面修改母版页控件的值的方法
- PHP获取真实客户端的真实IP
- php实现支持中文的文件下载功能示例
- 让CodeIgniter数据库缓存自动过期的处理的方法
- C++基于Directx MMX实现的图像灰度转换代码
- java多线程详细总结
- 浅谈Vue 初始化性能优化
- MySQL GBK→UTF-8编码转换
- Jquery 插件学习实例1 插件制作说明与tableUI优化
- JavaWeb中web.xml初始化加载顺序详解
- centos下file_put_contents()无法写入文件的原因及解决方法
- PHP常用数组函数介绍
- Android中修改设备权限的方法