php - Laravel 下的负载均衡器 + 集中式 Redis session 服务器

标签 php laravel redis load-balancing horizontal-scaling

我有 2 个 Laravel 节点在负载均衡器下的单独服务器中运行,以及一个用于 session 和缓存存储的专用 Redis 服务器。

我根据“redis”配置了 session 和缓存驱动程序,它连接得很好。我看到文件存储在 Redis 服务器内。

问题是当我尝试登录时,页面只是刷新而没有打印通常存储在 session 中的“无效凭据”错误。

由于负载均衡器不断从一个节点重定向到另一个节点,因此 session 会以某种方式丢失。作为单个实例,它工作得很好。有人对 Laravel 和负载平衡有同样的问题吗?

如果可以在不配置平衡器使用粘性 session 的情况下进行修复,那就太好了!

提前致谢!

最佳答案

我认为这个包TrustedProxy解决你的问题。安装它,然后将其添加到 config/trustedproxy.php 中:

return [
'proxies' => [
    '192.168.10.10',
],

// These are defaults already set in the config:
'headers' => [
    (defined('Illuminate\Http\Request::HEADER_FORWARDED') ? Illuminate\Http\Request::HEADER_FORWARDED : 'forwarded') => 'FORWARDED',
    \Illuminate\Http\Request::HEADER_CLIENT_IP    => 'X_FORWARDED_FOR',
    \Illuminate\Http\Request::HEADER_CLIENT_HOST  => 'X_FORWARDED_HOST',
    \Illuminate\Http\Request::HEADER_CLIENT_PROTO => 'X_FORWARDED_PROTO',
    \Illuminate\Http\Request::HEADER_CLIENT_PORT  => 'X_FORWARDED_PORT',
]
];

关于php - Laravel 下的负载均衡器 + 集中式 Redis session 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48990485/

相关文章:

javascript - 在 laravel 中使用 Ajax 自动完成表单

ruby-on-rails - 使用 Redis 的 Rails 片段缓存不会过期

mongodb - MongoDB 应该使用 Memcache 还是 Redis 进行缓存?

php - if else语句与mysql表? - PHP

php - Mysql查询结果未使用php将文件保存为csv格式

php - 从 Tinyint 中检索并转换为 html 中的文本

php - MySQL 或 PHP 错误? IPV6

php - 无法从 channel 中删除 laravel_database_ 前缀

laravel - 如何使用迁移在没有 created_at 和 Updated_at 列的 laravel 中创建表

python - Celery 使用默认代理而不是 reddis。 Flask + Celery + 工厂模式