0

私の Web アプリケーションの実稼働環境は、ロード バランサーの背後にある 2 台のサーバー上にあります。

認証用のセッションでパスポート(ローカル戦略)を使用しています。

アプリケーションが1つのサーバーで実行されると、すべて正常に動作しますが、本番環境では、1つのサーバーが他のサーバーによって確立されたCookie/セッションを認識しません(各リクエストは別のサーバーにランダムに送信され、制御できません)。

その結果、認証が必要なページにアクセスしようとすると (ログインした後でも)、ログイン ページにリダイレクトされます。

2 つのサーバーに、両方が認識するセッション Cookie を作成させるにはどうすればよいですか(明らかに、エクスプレス セッション ミドルウェアに同じシークレットを使用しました)。

ありがとう、

アロン

4

1 に答える 1

1

オプション1

常に同じ IP を同じマシンにルーティングするようにロード バランサーを構成します。ネットワークを変更するユーザーにとっては問題になる可能性があります。

オプション 2

データベースを実行している 3 番目のマシンを使用し、そのマシンをストアとして使用するために、express.session (およびその他のデータベース接続) をセットアップします。この質問/回答では、mongoose/mongodb でそれを行う方法について言及しています。

これはより一般的な解決策だと思いますが、もちろん、3 台目のマシンが必要ない場合はより高価になります。

于 2013-03-20T10:22:54.463 に答える