2014-09-25 224 views
1

我有這樣的配置。HTTP負載平衡與nginx

upstream servers{ 
       server localhost:port1; 
       server localhost:port2; 
       server localhost:port3; 

} 

server{ 
     listen nginx_port; 
     server_name localhost 

     location{ 
       proxy_pass http//:servers; 
} 



} 

現在我想知道的是如何保持用戶的會話保持,同時保持(我的意思是暫時關閉)一臺服務器。假設我現在有一個3頁的註冊用戶連接到localhost:port1,同時如果我想關閉服務器(localhost:port1),並將用戶轉發到下一個服務器(localhost:port2)會話活着我的意思是用戶應該能夠完成他的註冊沒有任何麻煩,那麼我必須在nginx配置文件中做什麼。可能嗎?

+0

什麼問題?您的服務器名稱可能很奇怪,它應該只是本地主機或www.domain.com – Pixou 2014-09-25 17:20:53

+0

嘗試使用本地主機。沒有工作。 – 2014-09-26 05:10:51

+0

如果您的服務器名稱中確實有正斜槓,請參閱文檔。 – Melvyn 2014-09-26 08:40:09

回答

1

你不能用nginx做到這一點,因爲nginx不是提供會話功能的東西。您需要對上游服務器執行此操作,方法是將它們配置爲使用所有服務器(如數據庫或memcache)共享的會話存儲,而不是服務器特定的會話存儲(如本地硬盤上臨時目錄中的文件)。你如何做到這一點將取決於你的上游服務器。例如,如果你使用的是Zend,你可能會實現一個database save handler

(我在這裏假設你的配置僅僅是一個例子,你實際上並沒有在同一臺機器上的三個相同的上游服務器。)

+0

我是nginx新手。其實我在一臺機器上有3個相同的服務器。我使用Tomcat作爲java服務器。在一臺機器上安裝3臺相同的服務器會有問題嗎?其實我很擔心,如果我的一個tomcat服務器因某種原因停止工作。如果我有java服務器作爲上游服務器,我應該如何獲取nginx中的會話親緣關係。 – 2014-10-04 22:13:32