2016-04-05 12 views
0

私のPHPアプリケーションで$ _SESSION変数を使用するのに苦労します。 PHPアプリケーションを実行しているWebサーバーに直接アクセスすると、すべて正常に動作します。しかし、プロダクション環境では、PHPアプリケーションをホストするWebサーバーは実際にプロキシ/ロードバランサの背後にあります。アーキテクチャはこれです:

AWSはロードバランサ - > 2台の同一のプロキシサーバで構成 - >各プロキシサーバーは、単にバックエンドサーバに要求を転送 - >バックエンドサーバが実際にPHPアプリケーションを実行し、実行します

プロダクションでこれを実行しなければならない理由は、ブラウザに特定のURLを設定する必要があるためです。

私はすでに、関連するすべてのページ

session_start(); 

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

を入れています。

このリクエストの転送によって$ _SESSION変数が保持されないことがありますか?

$ _SESSION変数はバックエンドサーバーを永続させ、プロキシサーバーは何もせずにバックエンドサーバーから要求を転送/受信するだけです。

答えて

0

クライアントごとに永続的なバックエンドサーバーを使用するようにロードバランサが設定されていることを確認してください。デフォルトでは、各バックエンドサーバーには独自のセッションデータがあるため、ユーザーが別のバックエンドサーバーに切り替えると、他のサーバーに割り当てられたセッションバリアントは持ちません。

いずれか、またはすべてのバックエンドサーバー間で共有セッション記憶域を実装する必要があります。

+0

2つのプロキシが存在しますが、理論上、どちらのプロキシサーバーが要求を受け取っても、両方とも同じバックエンドサーバーに転送されます。これでも$ _SESSION変数に影響はありますか? – user20010203

関連する問題