nginx:重定向到 if 块内的指定位置

nginx:重定向到 if 块内的指定位置

我在 nginx 中有一个位置,GET 和 POST 请求应该发送到不同的命名位置。但是此代码不起作用:

if ( $request_method = GET ) {
try_files /NON-EXISTENT @named_location_get
}

if ( $request_method = POST ) {
try_files /NON-EXISTENT @named_location_post
}

因为try_files不允许进入if

有没有其他方法可以将请求重定向到命名位置,并且可以在里面工作if

答案1

我不知道这在哪里有记录,但我见过在符号后使用变量的配置@,以使命名location符合条件。

将其与map块一起使用,即可消除if块。

我已经测试过这个例子:

map $request_method $name {
    GET      named_location_get;
    POST     named_location_post;
    default  named_location_other;
}
server {
    ...
    location ... {
        try_files nonexistent @$name;
    }
    location @named_location_get {
        ...
    }
    ...
}

相关内容