Nginx - 反向代理 - cookie

时间:2012-11-19 15:39:55

标签: cookies proxy nginx

我愿意使用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参数进行重定向...

有没有办法做我想做的事,或者我走错了路?

1 个答案:

答案 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的虚拟配置指令。