12.03.2015, 19:24, "Den Bozhok" <undyin...@yandex.ru>: > Сам отвечу на свой вопрос, может кому пригодится. > > Т.к. Lua весьма беден на функции, которые необходимы в этом деле, то можно > использовать математические и строковые функции + API самого nginx. В итоге > выходит что то вроде: > > server { > > listen 80; > > userid on; > > location / { > proxy_pass http://172.17.42.1:9292; > proxy_set_header X-Uid-Got $uid_got; > proxy_set_header X-Uid-Set $uid_set; > > set $user_cookie $http_cookie; > > if ($uid_set) { > set_by_lua $user_cookie ' > function encode_cookie(cookie) > local binary_string = "" > for i=5,35,8 do > local chunk = tonumber(string.sub(cookie, i, i+7), 16)
Можно записать короче: local chunk = tonumber(cookie:sub(i, i+7), 16) > > for j=1,4 do > binary_string = binary_string .. string.char(chunk % 256) > chunk = math.floor(chunk / 256) > end > end > > return ngx.encode_base64(binary_string) > end > > if ngx.var.http_cookie == nil then > return encode_cookie(ngx.var.uid_set) > else > return ngx.var.http_cookie .. ";" .. encode_cookie(ngx.var.uid_set) > end > '; > } > > proxy_set_header Cookie $user_cookie; > } > > } > > 11.03.2015, 19:48, "Den Bozhok" <undyin...@yandex.ru>: >> Доброго дня! >> >> Возник вопрос, можно ли внутри nginx, имея значение $uid_set получить ее >> представление в Base64, каким его видит бразуер получая заголовок Set-Cookie? >> >> Есть необходимость передавать этот uid при проксировании первого запроса >> пользователя, когда еще никакой куки у пользователя нету. >> Пробовал с помощью lua модуля, но так ничего и не вышло :/ >> >> Благодарю! >> , >> >> _______________________________________________ >> 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 -- Regards, Konstantin _______________________________________________ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru