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

Gal*_*anx 2 php load-balancing redis horizontal-scaling laravel

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

我相应地将会话和缓存驱动程序配置为“redis”并且它连接得很好。我看到文件存储在 redis 服务器中。

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

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

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

提前致谢!

小智 5

我认为这个包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',
]
];
Run Code Online (Sandbox Code Playgroud)