nginx 配置文件 实现IF AND 逻辑运算

nginx 配置文件 实现IF AND 逻辑运算

nginx 配置文件里面我们经常看见有写if的,但是nginx配置文件里面的if and or 这种逻辑运算是怎么实现呢

首先我们先说下,nginx并不支持if的逻辑运算and或者or的操作,并且不支持 if的嵌套

那我们如何实现and逻辑运算呢

下面是伪代码(nginx不支持运行),比如我们要实现这样的一个功能,当host是baidu.com的时候,并且是http访问的时候

if ($host = 'baidu.com' && $scheme = 'http') {

    return 301 https://www.baidu.com$request_uri;

}

接下来我们写一段nginx支持的代码,实现上面的功能

set $num 1;
if ($host = 'baidu.com') {

     set $num "{$num}2";

}

if ($scheme = 'http') {

    set $num "{$num}3";

}



if ($num = "123") {

    return 301 https://www.baidu.com$request_rui;

}

 

如果实现or呢,相对简单些:

if ($scheme = 'http') {
    return 301 https://www.baidu.com
}

if ($request_uri = 'tieba') {
    return 301 https://tieba.baidu.com
}

 

需要特别注意的地方是 if 和后面紧跟的小括号之间 必须有空格

 

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据