Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Проксирование Cookie как в Apache ProxyPassReverseCookie
Hello!
On Sun, Apr 17, 2011 at 12:32:21PM -0400, Begetan wrote:
> Уважаемые, хочу понять может ли Nginx
> выполнять проксирование Cookie наподобие
> директив Apache
> ProxyPassReverseCookieDomain или ProxyPassReverseCookiePath
>
>
> Подобная задача возникает при работе с
> сессиям, например от backend.org приходит
> ответ
> Set-Cookie JSESSIONID=xxx; domain=.backend.com; path=/
>
> А нужно сделать чтобы было так:
> Set-Cookie JSESSIONID=xxx; domain=.frontend.com; path=/
>
> В запросе соответственно выполняется
> обратная замена
В запросе ничего заменять не надо - там ни пути, ни домена не
присутствует.
> С заголовками запроса все просто, есть
> $cookie_, есть $http_cookie
>
> if ($http_cookie ~* "JSESSIONID=(.*)(domain=.frontend.com;)(.*)") {
> set $mycookie "JSESSIONID=$1 domain=.backend.com; $3";
> }
> Затем proxy_set_header Cookie $mycookie;
>
> Конфигурацию не проверял, но
> принципиально должно работать.
>
> А вот с заголовками ответа - непонятно.
> Есть директива
> add_header Set-Cookie $bla;
>
> Она работает. Проблема в том как
> извлечь исходную куку из заголовков
> ответа. Читал описание встроенных
> переменных и нужной не нашел.
>
> Вопрос 1. Доступны ли переменные с
> заголовками ответов, а именно Set-Cookie?
Заголовок ответа бекенда можно достать через переменную
$upstream_http_<header>, в данном случае -
$upstream_http_set_cookie.
Нюанс 1: сделать с ним можно что-то разве что через встроенный
перл (perl_set), ибо все if'и уже давно отработали.
Нюанс 2: если заголовков много - будет доступен только первый из
них.
> Вопрос 2. Можно ли каким то то способом
> реализовать проксирование Cookie в nginx?
> Вопрос 3. Не планируется ли аналог
> директив Apache ProxyPassReverseCookie?
>
> Я видел, что большинство вопрошающих в
> рассылку либо не могли сформулировать
> понятно вопрос, либо решили проблему с
> установкой нужной Cookie на стороне backend.
> Тем не менее, иногда существует
> необходимость сделать замену на frontend.
> Хочется услышать мнение разработчиков.
> Заранее благодарю!
IMHO - надо бы сделать. Но пока не до того.
Maxim Dounin
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru
|