可以使用以下的方式在nginx配置文件中实现类似 if A and B的条件判断:

set $test A;
if ($arg_a = "A") {
    set $test "${test}A";
}
if ($arg_b = "B") {
    set $test "${test}B";
}
if ($test = AB) {
    return 301 /if-and/;
}

可以使用以下的方式在nginx配置文件中实现类似 if A or B的条件判断:

set $test 0;
if ($arg_a = "1") {
    set $test 1;
}
if ($arg_b = "1") {
    set $test 1;
}
if ($test = 1) {
    return 301 /if-or/;
}

在location块内使用if语句的行为可能与预期不符,更多相关内容请参阅:
nginx.com: If is Evil... when used in location context
agentZH: How nginx "location if" works

参考内容:
Stackoverflow: How can I use an "or" operator in an nginx "if" statement?
nginx.org: Module ngx_http_rewrite_module

标签: none

添加新评论