Re: userid. привести содержимое переменной $uid_set в такой же вид, каким его получает браузер
Konstantin Tokarev
annulen at yandex.ru
Thu Mar 12 16:28:28 UTC 2015
12.03.2015, 19:24, "Den Bozhok" <undying-m at 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" <undying-m at yandex.ru>:
>> Доброго дня!
>>
>> Возник вопрос, можно ли внутри nginx, имея значение $uid_set получить ее представление в Base64, каким его видит бразуер получая заголовок Set-Cookie?
>>
>> Есть необходимость передавать этот uid при проксировании первого запроса пользователя, когда еще никакой куки у пользователя нету.
>> Пробовал с помощью lua модуля, но так ничего и не вышло :/
>>
>> Благодарю!
>> ,
>>
>> _______________________________________________
>> nginx-ru mailing list
>> nginx-ru at nginx.org
>> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
--
Regards,
Konstantin
Подробная информация о списке рассылки nginx-ru