nginx映射:在另一个映射中使用一个映射的值

nginx映射:在另一个映射中使用一个映射的值,nginx,webserver,Nginx,Webserver,根据nginx文档,可以在nginx映射中将变量用作值。我想这样做: map $http_host $subdomain { ~*.foo.com foo-internal; ~*.bar.com bar-internal; } map $app $server { app1 app1.$subdomain.example.com; app2 app2.$subdomain.example.com; } ... location ~ ^/(?<

根据nginx文档,可以在nginx映射中将变量用作值。我想这样做:

map $http_host $subdomain {
   ~*.foo.com   foo-internal;
   ~*.bar.com   bar-internal;
}

map $app $server {
   app1    app1.$subdomain.example.com;
   app2    app2.$subdomain.example.com;
}

...
location ~ ^/(?<app>\w+)/(.*) {
    proxy_pass http://$server/$2$is_args$args;
}
map$http\u host$子域{
~*.foo.com foo-internal;
~*.bar.com内部条形图;
}
映射$app$服务器{
app1 app1.$subdomain.example.com;
app2 app2.$subdomain.example.com;
}
...
位置^/(?\w+/(*)){
代理传递http://$server/$2$is_args$args;
}
因此,对于对
foo.com/app1
的请求,可以将其代理到
app1.foo internal.example.com
,而对
bar.com/app2
的请求将代理到
app2.bar internal.example.com
(即,我需要两个映射一起工作)

希望我的问题是清楚的,如果没有让我知道


提前感谢:)

不幸的是,“结果值可以是字符串或其他变量”,因此它不能用变量表示:(你的意思是它不能是
app
$subdomain`但可以是
$subdomain
本身吗(是的。在您的特殊情况下,您可以使用
代理\u pass http://$app.$subdomain.example.com/..
啊,很有趣-让我试试这个!