我有2台服务器运行相同的laravel app(laravel 5.3),两者都在反向代理(nginx)之后。对于会话我设置它使用redis。另外,我使用cartalyst sentinel进行用户身份验证。
假设反向代理是A,而laravel的服务器是B和C.
问题是:
当我登录将请求转发给B的A时,A中的下一个请求被转发到C.
当请求转发到C时,我无法传递请求,因为C将我视为访客而不是身份验证用户。
如何在不同的服务器上共享反向代理后面的会话?
配置/ cache.php
'default' => env('CACHE_DRIVER', 'redis'),
'stores' => [
'redis' => [
'driver' => 'redis',
'connection' => 'default',
],
],
配置/ session.php文件
'driver' => env('SESSION_DRIVER', 'redis'),
'connection' => 'session',
配置/ database.php中
'redis' => [
'cluster' => false,
'default' => [
'host' => env('REDIS_HOST', '192.168.1.102'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => 0,
'prefix' => env('REDIS_PREFIX', 'prod'),
],
'session' => [
'host' => env('REDIS_HOST', '192.168.1.102'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => 1,
'prefix' => env('REDIS_PREFIX', 'prod_session'),
],
更新:2017年10月11日
我尝试使用laravel默认的Auth,它的工作原理。从我的角度来看,问题出现在cartalyst哨兵中,尚未准备好在水平扩展服务器中使用。