Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: memcached status
- To: nginx-ru@xxxxxxxxx
- Subject: Re: memcached status
- From: Konstantin Svist <fry.kun@xxxxxxxxx>
- Date: Wed, 02 Dec 2009 22:20:48 -0800
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from :user-agent:mime-version:to:subject:references:in-reply-to :content-type:content-transfer-encoding; bh=TZCm8W3ILahVShfsvnrdXzqpA88VTXO6DCEZXMOJVk4=; b=ssGHMz/RYDsbaz3EHVGWo9DhNSAYs7bGVrzLybMLNSYXwyVBBJgY6XxcbNHhq/L9ic XdQ8/Y4t56Fh3clcfgV9o2+sg5iz+RpmR0J4Pe41KyVRPPsfb+fr6303tcwrJ3Djmnmb KHVp4d9SPMZuiWrCRnzKp3+li3enb1hdF6nFo=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:user-agent:mime-version:to:subject:references :in-reply-to:content-type:content-transfer-encoding; b=s1KLicx4bDHbSeTdT7OGE/Q3VTF0BnyhCjNz46m+qscseir4802PElDBGadjklLw7w 0z6vkaMOCdIDWnciUMhbYtEj3IK8GKLnZqd/It5kzbOJaJ1vuW5WfftLqAiGLa4l4be9 CHg5dZxDmLlpMdXzX8q9AVlkOW7AN2WO/uanU=
- In-reply-to: <745140478.20091203074539@xxxxxxxxx>
- References: <4B159E3E.4060808@xxxxxxxxx> <20091202112633.GM11085@xxxxxxxxx> <4B169C2C.8010103@xxxxxxxxx> <745140478.20091203074539@xxxxxxxxx>
On 12/02/2009 08:45 PM, Domrachev Ivan wrote:
обработка ответов бэкенда на фронтенде
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, что бы пользователю не уходил
наш спец. хиадер.
Всё это хорошо, но клиенты у меня тупые - кто их знает если они cookie
поддерживают. Да и с перлом не хочется возиться.
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru
|