我有一个Nginx负载平衡器负载平衡两个服务于PHP内容(Moodle)的nginx服务器。 他们共享相同的数据库,并使用一个单独的服务器上的NFS共享使用相同的会话目录。
我正在运行PHP 5.4.1和最新版本的Moodle。
现在负载平衡工作得很好,我可以使用代理访问两个工作节点。 但是,当login到Moodle时,我收到一个错误,指出cookies被禁用。 他们显然不是,login到其中一个工作节点工作得很好。 当单独访问节点时,MoodleSession cookie被设置,但是当通过负载平衡器访问它时,根本没有设置cookie。
我曾尝试更改Cookie模式以使用MySQL数据库,但这也不起作用。
我能做些什么获得多个工人节点来设置服务器存储在公共目录(NFS)的Cookie?
您可能需要使用proxy_pass_header Set-Cookie明确转发Set-Cookie标头。
一般来说,当试图确定负载均衡器的影响时,我经常发现将负载均衡分配给一个工作负载是很有用的,而不是直接连接负载均衡器。
只有负载平衡器按照预期与单个工作人员一起工作,则@ user1279647提到,您可以通过与多个工作人员进行testing来确定是否需要粘性会话。