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