Nginx负载平衡器背后的Laravel社交名媛

问题描述 投票:0回答:2

我有一个Laravel 7 APP,在NGINX负载均衡器后面有两个实例,SSL终止于负载均衡器,我已经按照Laravel文档中的描述设置了Trusted Proxies,它可以按预期工作,并且所有流量都使用HTTPS。我有两个Laravel实例使用相同的Redis服务器进行会话,并使用单独的Redis服务器进行缓存,并且两个实例在.env

中使用相同的会话域

如果两个Laravel服务器是负载均衡器中的唯一实例,它们都可以正常工作。但是,当两个Laravel实例都添加到负载均衡器时,任何Socialite登录都会失败,并显示无效的状态错误。

HTTP 500内部服务器错误

Laravel \ Socialite \ Two \ InvalidStateException

AbstractProvider-> user()

/ app / Http / Controllers / Auth / LoginController.php(第108行)

// Get google user data
$google = Socialite::driver('google')->user();

我在Google和Facebook登录上都遇到相同的问题。如果我尝试手动登录或注册新用户,则会收到419 |页面已过期,但是当负载均衡器只有一个实例或者我不是负载均衡器时,这些问题都不会发生。

谢谢,

李。

laravel session nginx load-balancing laravel-socialite
2个回答
0
投票

您可能需要使用stateless authentication

return Socialite::driver('google')->stateless()->user();

0
投票

[好,所以我解决了这个问题,我重建了.env文件,然后将其剪切并粘贴到两个服务器中,然后生成新的密钥并重新启动应用程序服务器和负载均衡器。

我经历了几次并且都检查了两个.env文件,所以我错过了一些东西或者问题不可见?

无论哪种方式都可以使用。

谢谢,

李。

© www.soinside.com 2019 - 2024. All rights reserved.