老王的几乎所有网站都是基于 Nginx 的,因为相对于 Apache 来说,Nginx 占用的资源更小,而且各人觉得配置文件改起来也比较方式。但是 Nginx 不支持 if/else 语法,也不能使用逻辑运算符,那在需要多个判断条件的复杂情况中,应该如何在 Nginx 配置文件中使用 AND 和 OR 呢?
如果我们要在 Nginx 中使用这种多条件判断,那么我们需要引入一个新的变量,用这个变量来存储多个条件的判断结果。下面以 AND 和 OR 为例,介绍下这个条件变量的写法。
一、Nginx OR 多条件写法
新建一个条件变量 flag,只要 flag 是 1 就说明起码有一个条件成立:
set $flag 0; if () { set $flag 1; } if () { set $flag 1; } if ($flag = 1) { your code; }
二、Nginx AND 多条件写法
新建一个条件变量 flag,全都都是 1 则表示所有条件都成立:
set $flag ""; if () { set "${flag}1"; } if () { set "${flag}1"; } if ($flag ~* "11") { your code; }