Welcome! Log In Create A New Profile

Advanced

Re[2]: memcached status

Domrachev Ivan
December 02, 2009 11:46PM
> Xочу добавить set $upstream_http_myheader "processed by memcached"
> Если добавляю от балды, то от upstream настоящий header теряется.

обработка ответов бэкенда на фронтенде
domrachevivan
May 27th, 9:05
иногда очень хочется на фронтенде что то поправить в запросах к
бэкенду, а также поменять ответ от бэкенда. рецепт как делать
манипуляции с хиадерами:

фронтенд - nginx. бэкенд в примере fastcgi, но может быть и любой
другой. сути это не меняет.
задача: от пользователя приходит кукис. кукис надо преобразовать и
отдать бэкенду. от бэкенда приходит ответ, в нём есть хиадер который
надо преобразовать и отдать пользователю.

frontend nginx.conf:
....
perl_modules perl;
perl_require cookies.pm;
perl_set $header cookies::parse_cookie;
perl_set $cookie cookies::generate_cookie;
.....
location / {
fastcgi_param header_name $header;
fastcgi_hide_header header_name;
add_header Set-Cookie $cookie;
}
.....
cookies.pm:

sub parse_cookie {
....
return "parse_result";
}

sub generate_cookie {
my $r=shift;
my $header=$r->variable("upstream_http_header_name");
....
return "name=value; expire=...";
}

как это работает:
пользователь отправляет запрос с установленным кукисом.
nginx его ловит и перед отправкой на бэкенд выполняет fastcgi_param
header_name $header. это вызывает функцию parse_cookie которая
разрезает параметры, производит необходимые манипуляции и возвращает
необходимое бэкенду значение. nginx его передаёт в указанном параметре
header_name.
бэкенд обработав запрос, если надо, выставляет в ответе хиадер
header_name.
когда бэкенд отдаст ответ, то nginx перед отправкой пользователю
выполняет add_header Set-Cookie $cookie, что вызывает функцию
generate_cookie.
в ней мы можем получить доступ к хиадерам, что отдал бэкенд:
$r->variable("upstream_http_header_name"). обработать их и вернуть
некий результат,
который будет выставлен в ответе пользователю в хиадере Set-Cookie.
не забываем сделать fastcgi_hide_header, что бы пользователю не уходил
наш спец. хиадер.

--
С уважением,
Domrachev mailto:Domrachev.Ivan@gmail.com


_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

memcached status

Konstantin Svist December 01, 2009 05:54PM

Re: memcached status

akalend December 02, 2009 02:18AM

Re: memcached status

Sergey Averyanov December 02, 2009 02:38AM

Re[2]: memcached status

akalend December 02, 2009 05:26AM

Re: Re[2]: memcached status

Sergey Averyanov December 02, 2009 06:06AM

Re: memcached status

Igor Sysoev December 02, 2009 06:26AM

Re: memcached status

Maxim Dounin December 02, 2009 06:50AM

Re: memcached status

Artem Bokhan December 02, 2009 07:26AM

Re: memcached status

Igor Sysoev December 02, 2009 09:20AM

Re: memcached status

Igor Sysoev December 02, 2009 06:28AM

Re: memcached status

Konstantin Svist December 02, 2009 11:58AM

Re[2]: memcached status

Domrachev Ivan December 02, 2009 11:46PM

Re: memcached status

Konstantin Svist December 03, 2009 01:22AM

Re[2]: memcached status

Domrachev Ivan December 03, 2009 01:34AM

Re: memcached status

Igor Sysoev December 03, 2009 02:26AM

Re: memcached status

Konstantin Svist December 03, 2009 03:16AM

Re: memcached status

Igor Sysoev December 03, 2009 03:20AM

Re: memcached status

Konstantin Svist December 03, 2009 03:44AM

Re: memcached status

Igor Sysoev December 03, 2009 03:48AM

Re: memcached status

Konstantin Svist December 03, 2009 03:58AM

Re: memcached status

Igor Sysoev December 03, 2009 04:00AM

Re: memcached status

Konstantin Svist December 03, 2009 04:26AM

Re: memcached status

Alex Vorona December 03, 2009 04:28AM

Re: memcached status

Igor Sysoev December 03, 2009 04:32AM

Re: memcached status

el July 22, 2011 08:44AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 229
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready