美文网首页
Nginx: if 逻辑运算(&&,||)实现

Nginx: if 逻辑运算(&&,||)实现

作者: HyacinthC | 来源:发表于2018-01-03 10:53 被阅读0次

    今天老板想让我加一个域名指向(http://www.yikaovip.com/),然后在
    nginx 配置文件里面配置好了。因为原本网站的 nginx 配置文件是有出域重定向规则的,于是我在 nginx 配置文件里面做了如下配置:

    if ($host != 'www.yikaovip.com' && $host != 'www.yk211.cn' ) {
            rewrite ^/(.*)$ https://www.yikaovip.com/$1 permanent;
    }
    

    于是重启了一下nginx服务器,但是不幸的是,启动的时候出错了:nginx: [emerg] invalid condition。这是因为nginx的配置中不支持if条件的逻辑与&& 逻辑或|| 运算等逻辑运算符 ,而且不支持if的嵌套语法,否则会报错。我们可以用下面的方法来实现:

    set $flag 0;
    if ($host != 'www.yk211.cn') {
            set $flag "${flag}1";
    }
     
    if ($host != 'www.yikaovip.com'){
            set $flag "${flag}1";
    }
     
    if ($flag = "011"){
            rewrite ^/(.*)$ https://www.yikaovip.com/$1 permanent;
    }
    

    上面实现了只有www.yk211.cn的域名正常访问,其他的出站域名全部跳转到www的域名。

    需要注意的是,上面的 if 和 ( 之间需要留空格,否则会报错:

    nginx: [emerg] unknown directive "if($host" in /alidata/nginx/conf/vhosts/default.conf:11
    

    相关文章

      网友评论

          本文标题:Nginx: if 逻辑运算(&&,||)实现

          本文链接:https://www.haomeiwen.com/subject/leyiixtx.html