如果应用的后台对应有很多服务器
我们想根据前台url中的某个标识来代理到后台的某个对应server上
也就是说proxy_pass指令中不能写死某个ip或者某个servername
而是需要根据某个值来对应某个servername
如:s1.test.com,s2.test.com都是后台的server
它们有对应的dns解析

在Nginx0.6.18版本之前
proxy_pass指令中的server是不支持使用变量的
不过,有人给打了一个patch,参见:
http://www.ruby-forum.com/topic/173585

在0.6.18后的新版本中
对应的server上是支持使用变量来构造某个server
不过还需要增加一个resolver指令
来指定dns服务器的地址

resolver 192.168.132.1


对应的反向代理就可以这么写了

location ~* /test/(\d+)/(.+)$
{
proxy_pass http://s$1.test.com:8001/$2?$args;
}



如果你的proxy_pass代理的是某个ip或者某个固定的servername
如下:

proxy_pass http://192.168.132.100:8001/$1;


或者

proxy_pass http://s.test.com:8001/$1;


那么即使在后面的url上有其它的变量,也是不需要配置resolver指令

附件是老版本的nginx的patch:
patch.unix.txt