1

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

负载平衡器是 KEMP LM-3600。

4

5 回答 5

3

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

于 2013-06-18T15:33:03.983 回答
0

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

于 2013-06-12T20:29:54.760 回答
0

请注意,Laravel 4 中的会话处理使用Symfony 2 代码,该代码在所有不使用 PHP 提供的会话保存处理程序(如“files”、“memcached”等)的自编码处理程序中缺乏适当的会话锁定。

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

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

您是否还使用任何花哨的数据库设置,例如主从复制?这将更有可能影响会话,如果仅在主设备上完成写入,则仅在从设备上完成读取,并且该从设备在更新最后一个写入操作的主设备之后。不建议将此类配置用作会话存储。我宁愿使用 Memcached。PHP会话保存处理程序也确实实现了正确的锁定......

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

于 2013-06-12T20:52:05.510 回答
0

使用共享资源来存储会话数据。File 和 memcached 肯定行不通。数据库应该没问题。这就是我在具有公共数据库的负载平衡设置中使用的。

于 2013-06-12T23:48:58.057 回答
0

我已经使用TrustedProxy一段时间了,它工作正常。

负载平衡器的主要问题是代理路由。下一个来自自述文件及其我正在寻找的内容。

如果您的站点位于负载平衡器、网关缓存或其他“反向代理”之后,则每个 Web 请求都有可能看起来总是来自该代理,而不是客户端实际在您的站点上发出请求。

为了解决这个问题,这个包允许你利用 Symfony 的代理知识。有关“受信任的代理”主题的更多说明,请参见下文。

于 2016-04-16T18:49:08.127 回答