Overwriting a request cookie with a variable

Maxim Dounin mdounin at mdounin.ru
Fri Feb 5 21:00:18 MSK 2010


On Fri, Feb 05, 2010 at 04:15:31PM +0100, Markus Jelsma wrote:

> Hello list,
> I have managed to retrieve data from memcache in a variable using the eval 
> module in Nginx but now i need that variable to be injected into the current 
> HTTP request.
> Scenario:
> An incoming HTTP request carries a cookie named token. I use that token to 
> look up a value in memcache. Afterwards, i need to replace the original token 
> cookie value with that new value i got from memcache before proxying the 
> request to a backend.
> I have looked in the wiki and figured i need to write a variable, but writing 
> to my cookie doesn't seem to work. Also, i have not seen any leads in the 
> HttpCoreModule documentation on how to set/overwrite/manipulate a variable 
> from the HTTP request.

You have to use

   proxy_set_header Cookie $variable;

and carefully construct $variable from original $http_cookie 
header and data you got from memcached.  Refer to relevant specs 
for Cookie header syntax, and use "if" with regexp matching and 
"set" to do it.

If you have control over backend - I recommend you not to replace 
it, but use some custom header instead, e.g.

   proxy_set_header X-Memcached-Data $data;

Maxim Dounin

More information about the nginx mailing list