您的位置:首页 > 运维架构 > Nginx

nginx 逻辑运算 if另类嵌套取反匹配等

2016-04-22 15:57 609 查看
nginx的配置中不支持if条件的逻辑与&& 逻辑或|| 运算 ,而且不支持if的嵌套语法,否则会报下面的错误:nginx: [emerg] invalid condition。

我们可以用变量的方式来间接实现。

要实现的语句:

if ($arg_unitid = 42012 && $uri ~/thumb/){
echo "www.ttlsa.com";
}

1
2
3

if
($arg_unitid
= 42012
&& $uri
~/thumb/){

echo
"www.ttlsa.com";
}

如果按照这样来配置,就会报nginx: [emerg] invalid condition错误。

可以这么来实现,如下所示:

set $flag 0;
if ($uri ~ ^/thumb/[0-9]+_160.jpg$){
set $flag "${flag}1";
}
if ($arg_unitid = 42012){
set $flag "${flag}1";
}
if ($flag = "011"){
echo "www.ttlsa.com";
}

1
2
3
4
5
6
7
8
9
10

set
$flag
0;

if ($uri
~ ^/thumb/[0-9]+_160.jpg$){
set
$flag
"${flag}1";

}
if
($arg_unitid
= 42012){

set
$flag
"${flag}1";
}

if ($flag
= "011"){
echo
"www.ttlsa.com";

}

转载请注明来自运维生存时间:  http://www.ttlsa.com/html/3876.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: