代码之家  ›  专栏  ›  技术社区  ›  Galanx

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

  •  2
  • Galanx  · 技术社区  · 7 年前

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

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

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

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

    如果没有将平衡器配置为使用粘性会话,就有可能修复,那就太好了!

    提前感谢!

    1 回复  |  直到 7 年前
        1
  •  5
  •   Ardian    6 年前

    我想这个包裹 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',
    ]
    ];