1

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

我有 2 台服务器,有 2 个不同版本的应用程序。IE 如果用户在他的计算机上有 V1,他必须去服务器 1。如果他有 V2,服务器 2。

我使用一些 $_GET 参数将用户重定向到具有此代码的相应服务器(如果不是 V1,那么它是 V2):

if ($args ~* V=1) {
    proxy_pass http://server1;
    break;
}
proxy_pass http://server2;

这很好用。但是我遇到了一些 AMF 请求的问题(需要 Flash):我无法设置 $_GET 参数或标头。所以我尝试使用 cookie,但似乎没有任何效果。

if ($http_cookie ~ 'V=1') {
    proxy_pass http://server1;
    break;
}
if ($cookie_VER ~ 'V=1'){
    proxy_pass http://server1;
    break;
}

我不能使用 HttpMapModule 因为我还需要使用 $_GET 参数进行重定向...

有什么办法可以做我想做的事,还是我走错了路?

4

1 回答 1

1

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

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

请查看我关于反向代理设置的 virtual.conf 配置指令的文章底部。

于 2015-10-01T20:16:42.653 回答