Назад | Перейти на главную страницу

Постоянное перенаправление nginx с параметрами URL-адреса на proxy_pass, что приводит к дублированию параметров URL-адреса

У меня есть URL-адрес продукта, который был заменен и требует постоянного перенаправления на другую страницу продукта для замены. Страница заменяющего продукта обслуживается proxy_pass. В моем контексте переданные параметры URL-адреса важны.

У меня есть следующая конфигурация:

location ~ ^/foo/bar {
  return 301 /foo/baz$is_args$args;
}

location ~ ^/foo/baz {
  set $public_folder_url /foo/baz;
  proxy_set_header Host $host;
  proxy_http_version 1.1;
  resolver 8.8.8.8;

  set $object_path $1;
  set $sub_folder_path "$object_path/index.html?bust-cache=true";

  set $backend_upstream "https://$host$public_folder_url$sub_folder_path";
  proxy_pass $backend_upstream;
}

Результатом такой конфигурации является то, что в первый раз, когда браузер говорит / foo / bar? Param = 1, результатом будет foo / baz? Param = 1? Param = 1 Последующие запросы в том же браузере ведут себя правильно, но при открытии браузера В режиме инкогнито поведение можно воссоздать.

Если я изменю 301 на:

location ~ ^/foo/bar {
  return 301 /foo/baz;
} 

Тогда все вызовы / foo / bar? Param = 1 приводят к / foo / baz, и важный параметр теряется.

Что я делаю не так? Есть ли лучший способ достичь того, чего я хочу достичь, а именно успешного перенаправления 301 на другой URL-адрес с proxy_pass, который включает параметры URL-адреса?