2012-11-19 252 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