Re: Проксирование Cookie как в Apache ProxyPassReverseCookie
Mikhail Mazursky
ash2kk на gmail.com
Пн Окт 17 03:39:14 UTC 2011
16 октября 2011 г. 5:33 пользователь Begetan <nginx-forum at nginx.us> написал:
> Приветствую!
>
> Хочу вернутся к нерешенному вопросу
> проксирования куки в ответах от
> бекенда.
>
>> >Заголовок ответа бекенда можно
>> достать через переменную
>> >$upstream_http_<header>, в данном случае -
>> >$upstream_http_set_cookie.
>>
>> >Нюанс 1: сделать с ним можно что-то
>> разве что через встроенный
>> >перл (perl_set), ибо все if'и уже давно
>> отработали.
>>
>> >Нюанс 2: если заголовков много - будет
>> доступен только первый из
>> >них.
Для изменения path у меня работает вот такое решение на lua:
location /path1 {
proxy_pass ...;
header_filter_by_lua '
local headers = ngx.header["Set-Cookie"]
if headers then
if type(headers) == "string" then
headers = {headers}
end
for i, header in ipairs(headers) do
local cookie = ngx.re.match(header, "JSESSIONID=([^;]+);", "io")
if cookie then
headers[i] = "JSESSIONID=" .. cookie[1] .. "; path=/path2";
ngx.header["Set-Cookie"] = headers
break
end
end
end
';
}
Доки и примеры тут:
http://wiki.nginx.org/HttpLuaModule
http://www.lua.org/manual/5.1/
Вообще хотелось бы встроенного proxy_... решения.
Подробная информация о списке рассылки nginx-ru