我愿意使用Nginx作为反向代理和负载均衡器。
我有2台服务器,有2个不同版本的应用程序。 I.E.如果用户在他的计算机上有V1,他必须进入服务器1.如果他有V2,服务器2。
我使用了一些$ _GET参数将用户重定向到相应的服务器(如果不是V1,那么它是V2):
if ($args ~* V=1) {
proxy_pass http://server1;
break;
}
proxy_pass http://server2;
这很有效。但我遇到了一些AMF请求的问题(需要Flash):我无法设置$ _GET参数或标头。所以我尝试使用cookies,但似乎没有任何效果。
if ($http_cookie ~ 'V=1') {
proxy_pass http://server1;
break;
}
if ($cookie_VER ~ 'V=1'){
proxy_pass http://server1;
break;
}
我无法使用HttpMapModule,因为我还需要使用$ _GET参数进行重定向...
有没有办法做我想做的事,或者我走错了路?
答案 0 :(得分:1)
实际上,如果我理解正确你的第二个例子应该有用,但那里有小错误。如果你可以为app 1设置一个名为V1的cookie,并为app 2设置另一个cookie为V2,那么你可以按如下方式使用该代码:
if ($http_cookie ~* 'V1') {
proxy_pass http://server1;
break;
}
if ($http_cookie ~* 'V2'){
proxy_pass http://server2;
break;
}
请查看我的文章底部关于reverse proxy setup的虚拟配置指令。