Sitzungspersistenz mit Nginx als Reverse-Proxy?

Sitzungspersistenz mit Nginx als Reverse-Proxy?

Ich verwende NGINX als Reverse-Proxy mit zwei Apache-Servern als Upstream-Server.

Auf beiden Apache-Servern ist eine benutzerdefinierte PHP-Anwendung installiert und sie nutzen dieselbe MySQL-Datenbank.

Ich glaube, Apache speichert Sitzungen in /var/lib/sessions.

Wenn ich NGINX verwende, wie kann ich das sitzungsbezogene Problem lösen? Ich verstehe den IP-Hash, aber ist das die einzig praktikable Möglichkeit?

Ich habe mich gefragt, wie die Leute dieses Problem auf ihrer Serverseite lösen?

Antwort1

Genau genommen hat dies nichts mit nginx zu tun. Es geht hier darum, Benutzern ein konsistentes Authentifizierungs-/Autorisierungssystem über mehrere Backends hinweg bereitzustellen. Anstelle von nginx können Sie jede beliebige Load-Balancing-Engine verwenden.

Standardansatz:

  • Verwenden Sie Memcached, um Sitzungen zu speichern (obwohl dies von Memcache-Autoren nicht empfohlen wird, wird diese Methode häufig verwendet und sogar PHP bietet Standardunterstützung dafür – Sie müssen eine Zeile in php.ini auskommentieren).
  • verwenden Sie Redis für denselben Zweck
  • Aktuelle Versionen von MySQL bietenmemcached-identische Schnittstelle zum Speichern von Sitzungen in MySQL(diesmal werden sie auf einer Festplatte gesichert) - verwenden Sie dafür, was Sie möchten, das Einzige - es sollte ein zentraler Speicher sein

verwandte Informationen