我在 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 {
...
}
...
}