在负载均衡器后面使用Laravel

时间:2013-06-12 20:13:24

标签: php session laravel load-balancing

我已经在Laravel 4网站上工作了一段时间,该公司只是把它放在负载均衡器之后。现在,当我尝试登录时,基本上只刷新页面。我尝试在https://github.com/fideloper/proxy使用fideloper的代理包但看不到任何变化。我甚至打开它以通过代理=>允许所有IP地址。 '*'。我需要一些帮助,知道需要做些什么才能让Laravel在负载均衡器后面工作,特别是对于会话。请注意,我使用的是数据库Laravel会话驱动程序。

负载均衡器是KEMP LM-3600。

5 个答案:

答案 0 :(得分:3)

感谢大家提供的有用信息。经过进一步测试后,我发现这不起作用的原因是因为我们通过负载均衡器强制https,但是在不通过负载均衡器时允许http。登录表单实际上是发布到http而不是https。这允许表单发布但会话数据从未返回到客户端。将表单更改为发布到https可修复此问题。

答案 1 :(得分:0)

我在工作时使用负载均衡器,并且在访问cPanel仪表板时遇到了类似的问题,每次我尝试访问某个部分时页面都会重新加载,并在我的IP地址改变时将其注销。解决方案是找到使用哪个端口cPanel并配置负载均衡器以将该端口绑定到一个WAN。对不起,我不熟悉laravel,如果它只是使用端口80,那么这可能不是一个解决方案。

答案 2 :(得分:0)

请注意,Laravel 4中的会话处理在所有不使用PHP提供的会话保存处理程序(如“files”,“memcached”等)的自编码处理程序中使用Symfony 2 code, which lacks proper session locking

当在具有Ajax等并行请求的Web应用程序中使用时,这将产生错误,但这应该与任何负载均衡器无关。

你真的应该做更多的调查。 HTTP负载平衡器确实对信息流有一些影响,但对PHP应用程序的唯一影响是,浏览站点的单个用户将随机地将请求发送到任何一个连接的服务器,而不是总是相同。 / p>

您是否也使用任何奇特的数据库设置,如主从复制?这样会更有可能影响会话,如果只在主设备上进行写操作,则仅在从设备上进行读取,并且此从设备位于主设备后面,并更新最后的写操作。不建议将此类配置用作会话存储。我宁愿使用Memcached。 PHP会话保存处理程序也实现了正确的锁定......

使用fideloper的代理是没有意义的。负载均衡器对Web服务器应该是透明的,即除非配置为这样做,否则它不应充当反向代理。

答案 3 :(得分:0)

使用共享资源存储会话数据。文件和memcached肯定不起作用。 DB应该没问题。这就是我在使用公共数据库进行负载平衡设置时所使用的。

答案 4 :(得分:0)

我一直在使用TrustedProxy一段时间,而且工作正常。

负载均衡器的主要问题是代理路由。接下来是自述文件及其我要找的内容。

  

如果您的网站位于负载均衡器,网关缓存或其他位置后面   "反向代理",每个Web请求都有可能出现   总是来自那个代理,而不是客户实际制作   请求在您的网站上。

     

要解决这个问题,这个软件包可以让你利用Symfony的优势   代理知识。有关该主题的更多说明,请参见下文   "受信任的代理"。