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