Redis2_pass with <host>:<port> from $args fail [maxf3r]

agentzh agentzh at
Thu Apr 12 03:35:30 UTC 2012

On Tue, Apr 10, 2012 at 1:32 PM, massimo ferrari
< at>wrote:

> I'm trying to address several redis instances, dispatching it on a
> host:port basis (one single backend location)
> here part of my nginx.conf location
> ...
> location /redis_backend {
> internal;
> set_unescape_uri $verb $arg_verb;
> set_unescape_uri $key $arg_key;
> set_unescape_uri $r_host $arg_host;
> set_unescape_uri $r_port $arg_port;
> redis2_query $verb $key;
> redis2_pass $r_host:$r_port;
> }

The redis2_pass directive only supports values with variable interpolation
to be the name of an already defined upstream. For example:

    upstream foo1 {

    upstream foo2 {

    http {
        server {
            location /foo {
                set $n 2;
                redis_pass "foo$n";

Your way will not work as expected.

If really you want truly dynamic redis backends (you do not want to
redefine them in nginx.conf or something like that), you can have a look at
the lua-resty-redis library which supports exactly what you want in your

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the nginx mailing list