Файлы cookie не устанавливаются в среде с балансировкой нагрузки
У меня есть балансировщик нагрузки Nginx, балансирующий нагрузку на два сервера nginx, обслуживающих контент PHP (Moodle). Они совместно используют одну и ту же базу данных и используют один и тот же каталог сеансов, используя общий ресурс NFS на отдельном сервере.
Я использую PHP 5.4.1 и последнюю версию Moodle.
Прямо сейчас балансировка нагрузки работает очень хорошо, и я могу получить доступ к обоим рабочим узлам через прокси. Однако при входе в Moodle я получаю сообщение об ошибке, в котором говорится, что файлы cookie отключены. Очевидно, что это не так, и вход в один из рабочих узлов работает просто отлично. При индивидуальном доступе к узлам cookie MoodleSession устанавливается, но при обращении к нему через балансировщик нагрузки cookie вообще не устанавливается.
Я попытался изменить режим cookie, чтобы использовать базу данных MySQL, но это тоже не работает.
Что я могу сделать, чтобы несколько рабочих узлов устанавливали файлы cookie, которые сервер хранит в общем каталоге (NFS)?
1 ответ
Возможно, вы захотите явно переслать заголовок Set-Cookie с proxy_pass_header Set-Cookie
,
В общем, пытаясь определить влияние балансировщика нагрузки, я часто нахожу полезным иметь его "балансировку нагрузки" на одного работника, а не полностью обходить балансировщик нагрузки, подключаясь напрямую к работнику.
Только когда балансировщик нагрузки работает с одним работником, как ожидалось, тогда, как упомянул @user1279647, вы можете определить, нужны ли вам липкие сеансы или нет, протестировав с несколькими работниками.