Сохранение сеанса с Nginx в качестве обратного прокси-сервера?

Сохранение сеанса с Nginx в качестве обратного прокси-сервера?

Я использую NGINX в качестве обратного прокси-сервера с двумя серверами Apache в качестве вышестоящих серверов.

На обоих серверах Apache установлено пользовательское приложение PHP, и они используют одну и ту же базу данных MYSQL.

Я полагаю, что Apache хранит сессии в /var/lib/sessions.

Если я использую NGINX, как преодолеть проблему, связанную с сессией? Я понимаю ip_hash; но является ли это единственным возможным способом?

Интересно, как люди решают эту проблему на своих серверах?

решение1

Строго говоря, это не имеет ничего общего с nginx, это задача предоставить пользователям согласованную систему аутентификации/авторизации на нескольких бэкендах. Вместо nginx можно использовать любой движок балансировки нагрузки.

Стандартный подход:

  • использовать memcached для хранения сессий (хотя авторы memcache не рекомендуют это, этот метод широко используется, и даже PHP имеет стандартную поддержку для него — вам нужно раскомментировать одну строку в php.ini)
  • используйте redis для той же цели
  • последние версии MySQL предоставляютmemcached-идентичный интерфейс для хранения сессий в MySQL(на этот раз они будут на диске) - используйте для этого все, что вам нравится, единственное - это должно быть централизованное хранилище.

Связанный контент