![Сохранение сеанса с Nginx в качестве обратного прокси-сервера?](https://rvso.com/image/668047/%D0%A1%D0%BE%D1%85%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5%20%D1%81%D0%B5%D0%B0%D0%BD%D1%81%D0%B0%20%D1%81%20Nginx%20%D0%B2%20%D0%BA%D0%B0%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%B5%20%D0%BE%D0%B1%D1%80%D0%B0%D1%82%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%BF%D1%80%D0%BE%D0%BA%D1%81%D0%B8-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0%3F.png)
Я использую NGINX в качестве обратного прокси-сервера с двумя серверами Apache в качестве вышестоящих серверов.
На обоих серверах Apache установлено пользовательское приложение PHP, и они используют одну и ту же базу данных MYSQL.
Я полагаю, что Apache хранит сессии в /var/lib/sessions.
Если я использую NGINX, как преодолеть проблему, связанную с сессией? Я понимаю ip_hash; но является ли это единственным возможным способом?
Интересно, как люди решают эту проблему на своих серверах?
решение1
Строго говоря, это не имеет ничего общего с nginx, это задача предоставить пользователям согласованную систему аутентификации/авторизации на нескольких бэкендах. Вместо nginx можно использовать любой движок балансировки нагрузки.
Стандартный подход:
- использовать memcached для хранения сессий (хотя авторы memcache не рекомендуют это, этот метод широко используется, и даже PHP имеет стандартную поддержку для него — вам нужно раскомментировать одну строку в php.ini)
- используйте redis для той же цели
- последние версии MySQL предоставляютmemcached-идентичный интерфейс для хранения сессий в MySQL(на этот раз они будут на диске) - используйте для этого все, что вам нравится, единственное - это должно быть централизованное хранилище.