次の要件があります
- 複数の JAR。それぞれが埋め込まれた Jetty を実行しています。
- 全員を同じドメイン/ポートで実行 - リバース プロキシ (Apache) を使用
- JAR は、異なるマシンで (同じホスト/ポートの下で) 実行されている複数のインスタンスを持つことができます。
- 完全なセッション分離 - 同じ webapp の 2 つのインスタンス間でも共有はまったくありません。
- これをすべて動的にスケーリングします。
- これが関連しているかどうかはわかりませんが、Spring Security がこれらの Web アプリの一部で使用されていることは知っています。
リバース プロキシ ルールを追加して Apache を再起動することで、すべてを稼働させました。以下は、webapp-1 の 2 つのインスタンスと webapp-2 の 2 つのインスタンスの簡単な説明です。
http://mydomain.com/app1 ==> 1.1.1.1:9099
http://mydomain.com/app2 ==> 1.1.1.1:9100
http://mydomain.com/app3 ==> 1.1.1.2:9099
http://mydomain.com/app4 ==> 1.1.1.2:9100
これを (ほぼ) 正常にセットアップした後、JSESSIONID cookie に問題が発生します。すべてのアプリは他のアプリの Cookie をオーバーライドします。つまり、一方が他方に影響を与えるため、完全なセッション分離をまだ実現していません。
この問題についてオンラインでよく読んでいますが、私のシナリオでは解決策が十分ではありません。
私にとって理想的な解決策は、Cookie 名に何らかの UUID を使用するように JETTY を定義することです。これがデフォルトではない理由はまだわかりません。
私は、JavaScript ソリューションを使用することさえあります。JavaScript には、ReverseProxy 操作後に URL が表示されるという利点があります。そのため、http://mydomain.com/XXX
Cookie 名を と定義できますXXX_JSESSIONID
。
しかし、これらのハウツーが見つかりません。
では、これを解決してセッションを完全に分離するにはどうすればよいでしょうか?