Arce 发表于 2021-8-22 21:42:01

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

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;

}
文档来源:http://www.zzvips.com/article/23196.html
页: [1]
查看完整版本: Nginx实现if多重判断配置方法示例