А если подумать проснувшись, то вариант с map'ом все же рабочий:
map $request_uri $request_uri_noargs {
"~(?<uri_noargs>[^\?]+)(\?\.+)?" "$uri_noargs";
}
proxy_pass http://127.0.0.1:8080?source=$request_uri_noargs;
4 августа 2017 г., 9:21 пользователь Andrey Istochkin <alstpostbox@gmail.com
> написал:
> Нет, к сожалению, то, что показалось рабочим на первый взгляд, работать не
> будет :/ Map не поможет, и передача уже кодированных параметров тоже плохая
> идея.
>
> пятница, 4 августа 2017 г. пользователь Andrey Istochkin написал:
>
> $uri содержит строку запроса в нормализованном виде(после
>> url-декодирования). Попробуйте передавать $request_uri, это исходная
>> строка запроса. Она, правда, содержит аргументы, но избавиться от них на
>> уровне бэкенда, или даже nginx'а(с помощью map, например), довольно просто.
>>
>> четверг, 3 августа 2017 г. пользователь vitcool написал:
>>
>>> за идею спасибо. рабочая. но придется бекенд допилить чтобы сначала читал
>>> хидеры, и только потом get параметры. но это лучше чем ничего
>>>
>>> вопрос правда остался открытым. почему такое поведение? даже эскейпинг
>>> (%20
>>> вместо пробелов) не помогает.
>>>
>>> Posted at Nginx Forum: https://forum.nginx.org/read.p
>>> hp?21,275786,275836#msg-275836
>>>
>>> _______________________________________________
>>> nginx-ru mailing list
>>> nginx-ru@nginx.org
>>> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>>
>>
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru