2016-04-05 3 views
0

Ich habe eine Menge Probleme mit $ _SESSION-Variablen auf meiner PHP-Anwendung. Alles funktionierte korrekt, wenn ich direkt auf den Webserver zugreife, auf dem die PHP-Anwendung läuft. In der Produktion befindet sich der Web-Server, der die PHP-Anwendung hostet, jedoch hinter einem Proxy/Load-Balancer. Die Architektur ist dies:

AWS Load Balancer -> die aus 2 identischem Proxy-Server -> jeder Proxy-Server einfach die Anforderung an einen Back-End-Server weiterleitet -> der Backend-Server tatsächlich ausführt und betreibt die PHP-Anwendung

der Der Grund, dass dies in der Produktion getan werden musste, ist eine Anforderung, bestimmte URLs im Browser zu haben.

Ich habe setzen bereits

session_start(); 

und

header('p3p: CP="NOI ADM DEV PSAi COM NAV OUR OTR STP IND DEM"'); 

auf allen relevanten Seiten.

Könnte diese Weiterleitung von Anfragen bewirken, dass die Variablen $ _SESSION nicht bestehen bleiben?

Ich verstehe nicht, der Backend-Server macht sowieso alles, die $ _SESSION-Variablen sollten den Backend-Server persistent sein und der Proxy-Server nur Anfragen vom Backend-Server weiterleiten/empfangen, ohne etwas zu tun?

Antwort

0

Stellen Sie sicher, dass der Load Balancer für die Verwendung eines persistenten Back-End-Servers für jeden Client konfiguriert ist. Standardmäßig verfügt jeder Backend-Server über eigene Sitzungsdaten. Wenn ein Benutzer zu einem anderen Backend-Server wechselt, verfügt er nicht über die Sitzungsvariablen, die auf dem anderen Server zugewiesen wurden.

Entweder das oder Sie müssen den gemeinsamen Sitzungsspeicher zwischen allen Backend-Servern implementieren.

+0

obwohl es 2 Proxies gibt, nur 1 Backend-Server, also in der Theorie, egal, welcher Proxy-Server die Anfrage erhält, beide auf den gleichen Backend-Server weiterleiten. Kann das noch Auswirkungen auf $ _SESSION-Variablen haben? – user20010203

Verwandte Themen