我想在 nginx $request_uri 和 $port 之间创建一个映射,我有很多位置,每个位置都有自己的端口。例如我有:
location /path1 {
proxy_pass 127.0.0.1:10000
}
location /path2 {
proxy_pass 127.0.0.1:10001
}
我要这个:
map $request_uri $port {
/path1 10000;
/path2 10001;
}
location $request_uri {
proxy_pass 127.0.0.1:$port
}
我该如何进行这样的配置?
答案1
我还没有尝试过,但是这种方法应该可行:
http {
map $reqest_uri $port {
~^/path1 10000;
~^/path2 10001;
default 9000;
}
}
server {
location / {
proxy_pass 127.0.0.1:$port;
}
}
怎么运行的:
location /
捕获所有路径的请求(除非有更具体的匹配)。然后 nginx$port
通过运行映射来解析变量的值。
在映射中,我们使用正则表达式来匹配 URI 的前缀。否则,该匹配将是精确匹配,这很可能行不通。