У меня есть 2 узла Laravel, работающие на отдельных серверах под балансировщиком нагрузки, и выделенный сервер Redis для хранения сеансов и кэша.
Я настроил драйверы сессии и кеша соответственно для «redis», и он подключается просто отлично. Я вижу файлы, хранящиеся на сервере Redis.
Проблема в том, что когда я пытаюсь войти в систему, страница просто обновляется без печати ошибок «Недействительные учетные данные», которые обычно хранятся в сеансе.
Поскольку балансировщик нагрузки продолжает перенаправлять с одного узла на другой, сеанс как-то теряется. В качестве единственного экземпляра это работает просто отлично, хотя. Есть ли у кого-то такая же проблема с laravel и балансировкой нагрузки?
Если есть возможное исправление без настройки балансировщика для использования липких сессий, это было бы здорово!
Заранее спасибо!
Я думаю, что этот пакет 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',
]
];
Других решений пока нет …