Laravel 负载均衡器+集中式redis会话服务器下

Laravel under a load balancer + centralized redis session server

我有 2 个 laravel 节点 运行 在负载均衡器下的单独服务器中,还有一个用于会话和缓存存储的专用 redis 服务器。

我根据 "redis" 配置了会话和缓存驱动程序,它连接得很好。我看到文件存储在 redis 服务器中。

问题是当我尝试登录时,页面只是刷新而没有打印通常存储在会话中的 "Invalid credential" 错误。

由于负载平衡器不断从一个节点重定向到另一个节点,会话不知何故丢失了。作为一个实例,它工作得很好。有人对 laravel 和负载平衡有同样的问题吗?

如果在不配置平衡器使用粘性会话的情况下有可能的修复,那就太好了!

提前致谢!

我认为这个软件包 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',
]
];