Variables в add_after_body или передача параметров в njs subrequest

Fedor Dikarev fe на hamilton.rinet.ru
Вт Сен 25 09:48:42 UTC 2018


Привет!

Продолжаю свой вопрос про построение динамического бинарника и
использование для этого add_afer_body и njs
> http://mailman.nginx.org/pipermail/nginx-ru/2018-September/061454.html
> http://mailman.nginx.org/pipermail/nginx-ru/2018-September/061461.html

В итоге сейчас собрали такую конструкцию:
> location ~ /new4game-qa/web-installer/(.*).exe {
>   add_after_body /exe_payload/$is_args$args;
>   alias /files/new4game-qa/web-installer/4game-setup.exe
> }
> location /exe_payload {
>   internal;
>   # rewrite ^/exe_payload/ /exe_payload/2/$gameKey/$gamekey/$arg_gameKey/$arg_gamekey/ break;
>   proxy_set_header X-GameKey "2/$gameKey/$arg_gameKey";
>   set $gameKey $arg_gameKey;
>   js_content exe_payload;
> }

(как видим тут я пробую разные варианты передать $arg_gameKey в
обработчик и все безуспешно) меня тут даже спасет если в njs будет
передаваться оригинальный url запроса, но этого я тоже не смог добиться :(
И сама функция:
> function exe_payload(r) {
> ...
>         var config = {
>                 "gameKey": r.variables['gameKey'],
>                 "r.vars": r.variables,
>                 "r.uri": r.uri,
>                 "r.headers": r.headersIn,
>                 "r.key": r.headersIn["X-GameKey"]
>         };
>         var configStr = JSON.stringify(config);

И на выходе получаю:
> 0079d9c0  61 6d 65 4b 65 79 22 3a  22 22 2c 22 72 2e 76 61  |ameKey":"","r.va|
> 0079d9d0  72 73 22 3a 6e 75 6c 6c  2c 22 72 2e 75 72 69 22  |rs":null,"r.uri"|
> 0079d9e0  3a 22 2f 65 78 65 5f 70  61 79 6c 6f 61 64 2f 24  |:"/exe_payload/$|
> 0079d9f0  69 73 5f 61 72 67 73 24  61 72 67 73 22 2c 22 72  |is_args$args","r|
> 0079da00  2e 68 65 61 64 65 72 73  22 3a 6e 75 6c 6c 2c 22  |.headers":null,"|

Собственно можно как-то раскрывать variables в location add_after_body?
Ну или может есть какой-то более правильный способ передать параметр в
njs функцию вызываемую внутри этого subrequest-а?

--
Fedor Dikarev


Подробная информация о списке рассылки nginx-ru