nginx的配置中不支持if条件的逻辑与/逻辑或运算 ,并且不支持if的嵌套语法,我们可以用变量的方式来实现:
首先是伪代码(即不被nginx支持),写在这里只是为了方便理解:
复制代码 代码如下:
复制代码
if ($remote_addr ~ "^(12.34|56.78)" && $http_user_agent ~* "spider") {
return 403;
}
if ($remote_addr ~ "^(12.34|56.78)" && $http_user_agent ~* "spider") {
return 403;
}
下面这是等效的,并真实可用的配置
复制代码 代码如下:
复制代码
set $flag 0;
if ($remote_addr ~ "^(12.34|56.78)") {
set $flag "${flag}1";
}
if ($http_user_agent ~* "spider") {
set $flag "${flag}2";
}
if ($flag = "012") {
return 403;
}
set $flag 0;
if ($remote_addr ~ "^(12.34|56.78)") {
set $flag "${flag}1";
}
if ($http_user_agent ~* "spider") {
set $flag "${flag}2";
}
if ($flag = "012") {
return 403;
}
最后
以上就是机灵面包最近收集整理的关于Nginx实现if多重判断配置方法示例的全部内容,更多相关Nginx实现if多重判断配置方法示例内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复