nginx расположение обратного прокси - PullRequest
1 голос
/ 04 марта 2020

Я бы хотел установить 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 et c, необходимо переадресовать, как показано в примере.

Какую конфигурацию мне нужно ввести в nginx?

1 Ответ

0 голосов
/ 04 марта 2020

Для управления строкой запроса лучше всего использовать 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 заявление.

...