memcached status

Domrachev Ivan domrachev.ivan на gmail.com
Чт Дек 3 07:45:39 MSK 2009


> 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 at gmail.com




Подробная информация о списке рассылки nginx-ru