• Welcome to Journal web site.

我是 PHP 程序员

- 开发无止境 -

Next
Prev

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

Data: 2022-11-16 19:13:30Form: JournalClick: 3

今天老板想让我加一个域名指向(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
Name:
<提交>