【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.ifunsion.com/archives/2529



    本博客所有文章如无特别注明均为原创。
    复制或转载请以超链接形式注明转自枫芸志,原文地址《【Nginx】配置实现多重if判断
    标签:
    分享:

还没有人抢沙发呢~

无觅相关文章插件,快速提升流量