<div class="gmail_quote">On Tue, Apr 10, 2012 at 1:32 PM, massimo ferrari <span dir="ltr"><<a href="mailto:massimo.ferrari@gmail.com">massimo.ferrari@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<p style="margin-top:0px!important;margin-right:0px;margin-bottom:15px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;border-top-width:0px;border-right-width:0px;border-bottom-width:0px;border-left-width:0px;border-style:initial;border-color:initial;font:inherit;color:rgb(51,51,51);font-family:Helvetica,arial,freesans,clean,sans-serif;line-height:20px;background-color:rgb(255,255,255)">


I'm trying to address several redis instances, dispatching it on a host:port basis (one single backend location)</p><p style="margin-top:15px;margin-right:0px;margin-bottom:15px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;border-top-width:0px;border-right-width:0px;border-bottom-width:0px;border-left-width:0px;border-style:initial;border-color:initial;font:inherit;color:rgb(51,51,51);font-family:Helvetica,arial,freesans,clean,sans-serif;line-height:20px;background-color:rgb(255,255,255)">


here part of my nginx.conf location<br>...<br>location /redis_backend {<br>internal;<br>set_unescape_uri $verb $arg_verb;<br>set_unescape_uri $key $arg_key;<br>set_unescape_uri $r_host $arg_host;<br>set_unescape_uri $r_port $arg_port;<br>


redis2_query $verb $key;<br>redis2_pass $r_host:$r_port;<br>}<br></p></blockquote><div><br></div><div>The redis2_pass directive only supports values with variable interpolation to be the name of an already defined upstream. For example:</div>
<div><br></div><div>    upstream foo1 {</div><div>        server <a href="http://10.32.26.7:6379">10.32.26.7:6379</a>;</div><div>    }</div><div><br></div><div><div>    upstream foo2 {</div><div>        server <a href="http://10.32.26.7:6379">10.32.26.7:6379</a>;</div>
<div>    }</div></div><div><br></div><div>    http {</div><div>        server {</div><div>            location /foo {</div><div>                set $n 2;</div><div>                redis_pass "foo$n";</div><div>            }</div>
<div>        }</div><div>    }</div><div><br></div><div>Your way will not work as expected.</div><div><br></div><div>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 example:</div>
<div><br></div><div><a href="https://github.com/agentzh/lua-resty-redis">https://github.com/agentzh/lua-resty-redis</a></div><div><br></div><div>Best,</div><div>-agentzh</div><div><br></div></div>