Для управления строкой запроса лучше всего использовать map
с именованными перехватами. Подробнее см. в этом документе .
Например:
map $request_uri $proxy {
default 0;
~*^(?<prefix>/home/.*)/index.html\?zvalue=(?<zvalue>[^&]+)&(?<suffix>.*)$ $prefix/$zvalue/index.html?$suffix;
}
Очевидно, что регулярное выражение должно соответствовать вашим точным требованиям, а приведенное выше является лишь подтверждением концепции .
Вы можете использовать переменную с оператором proxy_pass
, внутри блока if
, внутри существующего location
. Подробнее см. в этом документе .
Например:
location / {
proxy_pass http://example.com;
if ($proxy) { proxy_pass http://example.com$proxy; }
}
Любой запрос, который не подпадает под map
, будет прозрачно передан первым proxy_pass
заявление.