Я использую NGINX в качестве обратного прокси-сервера с двумя серверами Apache в качестве вышестоящих серверов.
На обоих серверах Apache установлено пользовательское приложение PHP, и они используют одну и ту же базу данных MYSQL.
Я полагаю, что Apache хранит сессии в /var/lib/sessions.
Если я использую NGINX, как преодолеть проблему, связанную с сессией? Я понимаю ip_hash; но является ли это единственным возможным способом?
Интересно, как люди решают эту проблему на своих серверах?
решение1
Строго говоря, это не имеет ничего общего с nginx, это задача предоставить пользователям согласованную систему аутентификации/авторизации на нескольких бэкендах. Вместо nginx можно использовать любой движок балансировки нагрузки.
Стандартный подход:
- использовать memcached для хранения сессий (хотя авторы memcache не рекомендуют это, этот метод широко используется, и даже PHP имеет стандартную поддержку для него — вам нужно раскомментировать одну строку в php.ini)
- используйте redis для той же цели
- последние версии MySQL предоставляютmemcached-идентичный интерфейс для хранения сессий в MySQL(на этот раз они будут на диске) - используйте для этого все, что вам нравится, единственное - это должно быть централизованное хранилище.