NGINX实现IF语句里的AND,OR多重判断
- nginx的配置中不支持if条件的逻辑与/逻辑或运算 ,并且不支持if的嵌套语法,我们可以用变量的方式来实现:
- 具体方法为AND 就用变量叠加,OR就用0或1切换
* 首先是伪代码(即不被nginx支持),写在这里只是为了方便理解:
if ($remote_addr ~ "/forum.php" && $query_string ~* "mod=ajax&action=downremoteimg&message=") {
return 403;
}
set $flag 0;
if ($request_uri ~* "/forum.php"){
set $flag "${flag}1";
}
if ($query_string ~* "mod=ajax&action=downremoteimg&message=" ){
set $flag "${flag}2";
}
if ($flag = "012") {
return 403;
}
遇到不法商家伪造站点跳转真实页面怎么办?
if ( $http_referer ~* "https://www.xxxx.com" )
{
return 307 https://weidian.com/?userid=163279346;
}