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',
]
];
Другие вопросы по тегам