nginx反向代理位置

问题描述 投票:1回答:1

我希望按照以下规则将nginx设置为反向代理:

http://www.example.com/home/{x}/{y}//index.html?zvalue={z}&a=1&b=2&c=3 etc...

代理

http://www.example2.com/home/{x}/{y}/{z}/index.html?a=1&b=2&c=3 etc...

因此,基本上将{z}的查询字符串值设置为路径的一部分。如示例中所示,所有其他查询参数(例如a,b,c,d等)都需要转发。

我需要在nginx中进行哪些配置?

nginx nginx-location nginx-reverse-proxy
1个回答
0
投票

处理查询字符串最好使用带有命名捕获的map。有关详细信息,请参见this document

例如:

map $request_uri $proxy {
    default 0;
    ~*^(?<prefix>/home/.*)/index.html\?zvalue=(?<zvalue>[^&]+)&(?<suffix>.*)$ $prefix/$zvalue/index.html?$suffix;
}

显然,正则表达式需要满足您的确切要求,而以上只是概念证明。

您可以将变量与现有proxy_pass中的if块中的location语句一起使用。有关详细信息,请参见this document

例如:

location / {
    proxy_pass http://example.com;
    if ($proxy) { proxy_pass http://example.com$proxy; }
}

第一个map语句将透明地传递任何不受proxy_pass约束的请求。

© www.soinside.com 2019 - 2024. All rights reserved.