Laravel под балансировщиком нагрузки + централизованный сервер сеансов redis

У меня есть 2 узла Laravel, работающие на отдельных серверах под балансировщиком нагрузки, и выделенный сервер Redis для хранения сеансов и кэша.

Я настроил драйверы сессии и кеша соответственно для «redis», и он подключается просто отлично. Я вижу файлы, хранящиеся на сервере Redis.

Проблема в том, что когда я пытаюсь войти в систему, страница просто обновляется без печати ошибок «Недействительные учетные данные», которые обычно хранятся в сеансе.

Поскольку балансировщик нагрузки продолжает перенаправлять с одного узла на другой, сеанс как-то теряется. В качестве единственного экземпляра это работает просто отлично, хотя. Есть ли у кого-то такая же проблема с laravel и балансировкой нагрузки?

Если есть возможное исправление без настройки балансировщика для использования липких сессий, это было бы здорово!

Заранее спасибо!

1

Решение

Я думаю, что этот пакет 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',
]
];
4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]