Re: Проксирование Cookie как в Apache ProxyPassReverseCookie
    Begetan 
    nginx-forum на nginx.us
       
    Сб Окт 15 23:33:12 UTC 2011
    
    
  
Приветствую!
Хочу вернутся к нерешенному вопросу
проксирования куки в ответах от
бекенда.
> >Заголовок ответа бекенда можно
> достать через переменную
> >$upstream_http_<header>, в данном случае -
> >$upstream_http_set_cookie.
>
> >Нюанс 1: сделать с ним можно что-то
> разве что через встроенный
> >перл (perl_set), ибо все if'и уже давно
> отработали.
>
> >Нюанс 2: если заголовков много - будет
> доступен только первый из
> >них.
Пробую применить perl
Есть такая конфигурация Nginx
http {
    perl_modules  /home/nginx/data/perl;
    perl_require cproxy.pm;
    perl_set  $some_new_cookie cproxy::handler ; 
...
server {   
    location /test {
        proxy_pass            http://backend;
        proxy_hide_header Set-Cookie;
        add_header Set-Cookie $some_new_cookie;
   }
Обработчик запускается:
package cproxy;
use nginx;
sub handler {
    my $r = shift;
    if (my $cookie = $r->variable($upstream_http_Set_Cookie)) {
        $cookie = "Cookie=NEW;" ;
    }
    else {
        return $cookie="Cookie=NULL;";
}
#    $r->header_out("Set-Cookie", $cookie);
#    $r->send_http_header;
#   return OK if $r->header_only;
    return $cookie;
}
Результат - выводится Cookie=NULL; хотя в
логах отображается нормальная
$upstream_http_Set_Cookie
Использование send_http_header делу не
помогает
Судя по всему вызов обработчика
переменной происходит слишком рано,
как быть?
Posted at Nginx Forum: http://forum.nginx.org/read.php?21,191814,216755#msg-216755
    
    
Подробная информация о списке рассылки nginx-ru