当前位置 主页 > 服务器问题 > nginx问题汇总 >

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

    栏目:nginx问题汇总 时间:2018-09-15 16:18

    这篇文章主要介绍了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;
    }