nginx反向代理位置

时间:2020-03-04 15:10:31

标签: nginx nginx-location nginx-reverse-proxy

我希望按照以下规则将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中进行什么配置?

1 个答案:

答案 0 :(得分:0)

最好使用带有命名捕获的TypeError: [1, 2, 3].foreach is not a function来操纵查询字符串。有关详细信息,请参见this document

例如:

map

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

您可以在现有map $request_uri $proxy { default 0; ~*^(?<prefix>/home/.*)/index.html\?zvalue=(?<zvalue>[^&]+)&(?<suffix>.*)$ $prefix/$zvalue/index.html?$suffix; } 的{​​{1}}块内的proxy_pass语句中使用变量。有关详细信息,请参见this document

例如:

if

任何不受location约束的请求都将由第一个location / { proxy_pass http://example.com; if ($proxy) { proxy_pass http://example.com$proxy; } } 语句透明地传递。