nginx: if逻辑运算 (与或非) 实现

今天我想限制服务器80端口只能通过特定域名访问,于是我在nginx配置文件里面做了如下配置:

if ($host != 'books.summergao.com' || $host != 'www.summergao.com' ) {
  return 403;
}

重新加载配置  ./nginx -s reload,但是不幸的是报错了:nginx: [emerg] invalid condition "$host"。

这是因为nginx的配置中不支持if条件的逻辑与&& 逻辑或|| 运算等逻辑运算符 ,而且不支持if的嵌套语法,否则会报错。我们可以用下面的方法来实现:

set $flag 0;
if ($host != 'books.summergao.com'){
     set $flag "${flag}1";
}

if ($host != 'www.summergao.com'){
     set $flag "${flag}1";
}

if ($flag = "011"){
     return 403;
}

 

Guess you like

Origin blog.csdn.net/qq_25231683/article/details/120762705
Recommended