nginx实现逻辑与运算,让if条件支持 and && 多重判断方法

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;
}
OK,就这样了。


关键词: nginx逻辑与

上一篇: 分享一些常用的nginx全局变量,方便配置Nginx
下一篇: Nginx安全配置:禁止HTML接受POST提交数据

目前还没有人评论,您发表点看法?
发表评论

评论内容 (必填):