1

memcached セッション マネージャーを備えた tomcat7 があり、nginx を使用して tomcat をプロキシしましたが、問題ありません。

しかし今は、iphone safari で支払い、jsessionid の URL でアクセスする必要があります。したがって、tomcat コンテキストに cookies="false" を追加します。その後、セッションへのアクセスが失われます (URL に jsessionid を使用)。ただし、nginx と 1 つの tomcat サーバーを使用する場合、または tomcat サーバーに直接アクセスする場合は、すべて問題ありません。

なぜ起こったのですか?誰でもこの問題を解決できますか。ありがとう

4

1 に答える 1

0

Martin Grotzke に感謝します。Tomcat のログは問題ありません。msm のログで何かを見つけました。

Nginxは、Cookies=“false” の構成で1 つの tomcat のみ
をプロキシします。 最初の要求では、msm はセッションを memcached にバックアップしませんでした。
次の要求では jsessionid を URL に指定し、tomcat でセッションを見つけ、msm でセッションを今すぐバックアップします。

nginxが2 つの tomcatを Cookie の設定で「false」にプロキシする場合、
最初のリクエスト、nginx プロキシから TomcatA へ、ログインは OK、応答 sessionid(TomcatA) ですが、msm はそれを memcached にバックアップしませんでした。
次のリクエストで、nginx プロキシから TomcatB へURL に sessionid(TomcatA) があり、Tomcat または memcached にセッションがないため、TomcatB は新しいセッションを作成し、
3 番目のリクエスト、sessionid(TomcatB の新しいセッション) を持つ TomcatA への nginx プロキシを作成します。
そのため、常に 2 つの tomcat 間でセッションを維持および共有します。

解決策は、Tomcat で cookies="false" の構成を削除することです。

于 2013-04-07T06:01:09.530 に答える