2012-11-19 199 views
1

我愿意使用Nginx作为反向代理和负载均衡器。Nginx - 反向代理 - Cookie

我有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

其实,你的第二个例子应该工作,如果我正确理解你,但有一个小错误。如果你可以设置一个名为V1的应用程序1的cookie,并设置另一个cookie里V2的应用程序2,那么你可以按如下方式使用该代码:

if ($http_cookie ~* 'V1') { 
    proxy_pass http://server1; 
    break; 
} 
if ($http_cookie ~* 'V2'){ 
    proxy_pass http://server2; 
    break; 
} 

请检查我的文章的底部上virtual.conf配置指令reverse proxy setup