Using memcache to set variables

Valery Kholodkov valery+nginxen at grid.net.ru
Wed Aug 12 18:01:51 MSD 2009


----- "Avleen Vig" <avleen at gmail.com> wrote:

> I started using the geo module to direct users by IP address, this
> week, and really like it!
> 
> It got me thinking about another thing I've been wanting to do:
> Direct
> users to different machines based on some arbitrary data. I don't
> want
> to rely just on cookies, because those can be manipulated. Here's
> what
> I was thinking, and I'm wondering if it can be done some how in
> nginx?

You might take a look at the eval module I've recently written:

http://www.grid.net.ru/nginx/eval.en.html

The configuration in your case might look like:

            location /a {
                eval_escalate on;

                eval $backend {
                    set $memcached_key $cookie_sessionid;
                    memcached_pass http://memcached_host:port;
                }

                proxy_pass http://$backend;
            }

This makes sense only if the service which you use to locate machine for a cookie cannot generate X-Accel-Redirect header. If it can, it's faster and more transparent to use X-Accel-Redirect.

> The sessionid is stored in a cookie. This can't be manipulated or the
> users ends up not being logged in.
> Store the sessionid in memcache, and have the value set to the name
> of
> a location.
> Have nginx fetch the value for 'sessionid' from memcache, and then
> redirect the user internally to that location.
> 
> Is this even remotely possible? I think some hardware load balancers
> can do it, but I'm too poor to buy one of those :-)

-- 
Regards,
Valery Kholodkov





More information about the nginx mailing list