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',
]
];
我有 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',
]
];