评论

收藏

[Nginx] Nginx实现if多重判断配置方法示例

web服务器 web服务器 发布于:2021-08-22 21:42 | 阅读数:512 | 评论:0

nginx的配置中不支持if条件的逻辑与/逻辑或运算 ,并且不支持if的嵌套语法,我们可以用变量的方式来实现:
首先是伪代码(即不被nginx支持),写在这里只是为了方便理解:
复制代码代码如下:
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; 
}
关注下面的标签,发现更多相似文章