2014-09-25 278 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