Nginx中IF、AND、OR语句用法实例
在上一篇文章:《Nginx if语句加正则表达式实现字符串截断》中, 我们介绍过了使用if来进行截断字符串的用法, 这次我们来了解下if的逻辑用法:
什么是逻辑用法呢, 就程序中的and、or关系, 就叫做逻辑了.
NGINX支持if的 and 与 or 或者 && 与 || 吗?
答案是No.
当你尝试这样配置, 重载nginx时, nginx会报出错误
location = /test/ {
default_type text/html;
set $b 0;
if ( $remote_addr != '' && $http_x_forwarded_for != '' ){
set $b '1';
}
echo $b;
}
[root@test-vm ~]# /usr/local/nginx/sbin/nginx -t
nginx: [emerg] invalid condition "$remote_addr" in /usr/local/nginx/conf/nginx.conf:60
configuration file /usr/local/nginx/conf/nginx.conf test failed
那么我们应该怎样来实现and 和or的逻辑关系呢?
location = /test_and/ {
default_type text/html;
set $a 0;
set $b 0;
if ( $remote_addr != '' ){
set $a 1;
}
if ( $http_x_forwarded_for != '' ){
set $a 1$a;
}
if ( $a = 11 ){
set $b 1;
}
echo $b;
}
location = /test_or/ {
default_type text/html;
set $a 0;
set $b 0;
if ( $remote_addr != '' ){
set $a 1;
}
if ( $http_x_forwarded_for != '' ){
set $a 1;
}
if ( $a = 1 ){
set $b 1;
}
echo $b;
}
相关推荐
-
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,
-
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中 <.<.>=.<= 比较. 本示例使用了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
-
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
-
Nginx实现if多重判断配置方法示例
nginx的配置中不支持if条件的逻辑与/逻辑或运算 ,并且不支持if的嵌套语法,我们可以用变量的方式来实现: 首先是伪代码(即不被nginx支持),写在这里只是为了方便理解: 复制代码 代码如下: if ($remote_addr ~ "^(12.34|56.78)" && $http_user_agent ~* "spider") { return 403; } 下面这是等效的,并真实可用的配置 复制代码 代码如下: set $flag
-
Angular中$cacheFactory的作用和用法实例详解
先说下缓存: 一个缓存就是一个组件,它可以透明地储存数据,以便以后可以更快地服务于请求.多次重复地获取资源可能会导致数据重复,消耗时间.因此缓存适用于变化性不大的一些数据,缓存能够服务的请求越多,整体系统性能就能提升越多. $cacheFactory介绍: $cacheFactory是一个为Angular服务生产缓存对象的服务.要创建一个缓存对象,可以使用$cacheFactory通过一个ID和capacity.其中,ID是一个缓存对象的名称,capacity则是描述缓存键值对的最大数量. 1.
-
ES6中Array.copyWithin()函数的用法实例详解
ES6为Array增加了copyWithin函数,用于操作当前数组自身,用来把某些个位置的元素复制并覆盖到其他位置上去. Array.prototype.copyWithin(target, start = 0, end = this.length) 该函数有三个参数. target:目的起始位置. start:复制源的起始位置,可以省略,可以是负数. end:复制源的结束位置,可以省略,可以是负数,实际结束位置是end-1. 例: 把第3个元素(从0开始)到第5个元素,复制并覆盖到以第1个位置
-
Python中return语句用法实例分析
本文实例讲述了Python中return语句用法.分享给大家供大家参考.具体如下: return语句: return语句用来从一个函数 返回 即跳出函数.我们也可选从函数 返回一个值 . 使用字面意义上的语句 #!/usr/bin/python # Filename: func_return.py def maximum(x, y): if x > y: return x else: return y print maximum(2, 3) 输出 $ python func_return.py
-
python中pass语句用法实例分析
本文实例讲述了python中pass语句用法.分享给大家供大家参考.具体分析如下: 1.空语句 do nothing 2.保证格式完整 3.保证语义完整 4.以if语句为例: C/C++中写法: if(true) ; // do nothing else {} // do nothing python中写法: if true: pass # do nothing else: print "do something." 测试程序:定义一个空函数 >>> def null
-
python中list循环语句用法实例
本文实例讲述了python中list循环语句用法.分享给大家供大家参考.具体用法分析如下: Python 的强大特性之一就是其对 list 的解析,它提供一种紧凑的方法,可以通过对 list 中的每个元素应用一个函数,从而将一个 list 映射为另一个 list. 实例 复制代码 代码如下: a = ['cat', 'window', 'defenestrate'] for x in a: print x, len(x) for x in [1, 2, 3]: print x,
-
Javascript中With语句用法实例
本文实例讲述了Javascript中With语句用法.分享给大家供大家参考.具体如下: <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>With语句(类似于VB中的)</title>
-
Javascript中For In语句用法实例
本文实例讲述了Javascript中For In语句用法.分享给大家供大家参考.具体如下: <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>For In 语句</title> <
-
C#中while循环语句用法实例详解
本文实例讲述了C#中while循环语句用法.分享给大家供大家参考.具体实现方法如下: 在C#中while循环是我们经常会用到的一种循环语句,while循环特点是直到条件为零时才跳出循环,当然中间可以利用其它函数直接跳出,对于while的具体用法有必要做一个较为详尽的分析. 先来说Foreach和For的区别,Foreach是针对对象进行遍历的,不需要定义循环次数,但是有个缺点,Foreach遍历取的是只读数据,不能在Foreach中进行对象的增删改,而For循环就可以.这个改成while循环的代
-
MySQL中Replace语句用法实例详解
目录 前言 一.replace into函数 二.replace into .insert ignore 和 insert into的区别 三.replace函数 总结 前言 replace into平时在开发中很少用到,这次是因为在做一个生成分布式ID的开源项目,调研雅虎推出的一个基于数据库生成唯一id生成方案:flickr 碰到的一个知识盲点,仅以此篇记录一下. 一.replace into函数 表结构 CREATE TABLE `id_generator` ( `id` bigint(20
-
C#中static静态变量的用法实例
本文实例讲述了C#中static静态变量的用法.分享给大家供大家参考.具体如下: 使用 static 修饰符声明属于类型本身而不是属于特定对象的静态成员static修饰符可用于类.字段.方法.属性.运算符.事件和构造函数,但不能用于索引器.析构函数或类以外的类型 静态全局变量 定义:在全局变量前,加上关键字 static 该变量就被定义成为了一个静态全局变量. 特点: ① .该变量在全局数据区分配内存. ② .初始化:如果不显式初始化,那么将被隐式初始化为0. 静态局部变量 定义:在局部
随机推荐
- ACCESS转化成SQL2000需要注意的几个问题小结
- javascript中clone对象详解
- dvbbs 8.2 SQL Injection注射漏洞分析
- 正则表达式 学习参考 推荐入门者看
- asp.net导出EXCEL的功能代码
- php 购物车的例子
- Android滑动到顶部和底部时出现的阴影如何去掉
- 培养自己的php编码规范
- 简介Linux中cp和mv搭配{,}在shell当中的用法
- 多种方法实现360浏览器下禁止自动填写用户名密码
- JavaScript 无缝上下左右滚动加定高定宽停顿效果(兼容ie/ff)
- 解析func_num_args与func_get_args函数的使用
- 详谈java 堆区、方法区和栈区
- JavaScript蒙板(model)功能的简单实现代码
- asp.net url分页类代码
- php 学习笔记第1/2页
- Android 开发音频组件(Vitamio FAQ)详细介绍
- 路由器NAT功能配置简介与实例
- 深入分析Android构建过程
- Android 仿抖音的评论列表的UI和效果的实现代码