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