首页 > 解决方案 > Nginx 负载均衡器背后的 Laravel Socialite

问题描述

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

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

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 | 页面已过期,但当负载均衡器只有一个实例或我没有使用负载均衡器时,不会出现这些问题。

谢谢,

李。

标签: laravelsessionnginxload-balancinglaravel-socialite

解决方案


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

我已经多次检查了这两个 .env 文件,所以要么我错过了一些东西,要么问题不可见?

无论哪种方式,它现在都在工作。

谢谢,

李。


推荐阅读