Рейтинг:1

Отправка выборочных аргументов из прокси-сервера Nginx в восходящие потоки через proxy_pass

флаг sb

У меня настроен прокси-сервер Nginx для сервера хранения объектов Minio S3.

Могу ли я удалить некоторые параметры запроса (более одного agrs), когда я передаю запрос восходящему потоку (Minio), и сохранить остальные args?

Например: это запрос, полученный Nginx:

/my-private-bucket/my-image.jpeg?X-Amz-Algorithm=AWS4-HMAC-SHA256&w=320&X-Amz-Date=20211218T231908Z&h=200

Мне нужно преобразовать ссылку выше в ссылку ниже (т.е. удаление лишних аргументов: w=320 и h=200), а затем использовать proxy_pass:

/my-private-bucket/my-image.jpeg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20211218T231908Z

Конечно, я могу использовать несколько операторов IF в блоке местоположения: Вот образец или же Вот этот. но я думаю, что должно быть что-то более рациональное. Что-то вроде использования регулярного выражения и sed в bash:

эхо [упомянутый uri] | sed -E 's/&?[wh]=[0-9]*//g'

...или даже используя блоки карты в Nginx:

карта $ args $ полированные аргументы
{
    $аргументы по умолчанию
    ~&?[wh]=[0-9]* ((что-то волшебное))
}

Любые идеи?

Рейтинг:0
флаг us

Если вы можете работать наоборот, то есть передать известный список параметров, вы можете использовать:

proxy_pass http://backend.example.com/path?param1=$arg_param1&param2=$arg_param2

Если порядок аргументов отброшенных ключей всегда остается одинаковым, вы можете использовать карта:

карта $args $cleaned_args {
    $аргументы по умолчанию;
    ^(.*)[?&]w=[0-9]+(.*)&h=[0-9]+(.*)$ $1$2$3;
    ^(.*)[?&]h=[0-9]+(.*)&w=[0-9]+(.*)$ $1$2$3;
}

Регулярное выражение фиксирует все до &w или же ?w, то все до &час а остальные в группы захвата. Второй вариант делает то же самое для противоположного порядка параметров.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.