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

今天老板想让我加一个域名指向(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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容