1

「http:// localhost:8080 / appexploded / login.jsp」(Tomcat)でTomcatアプリを実行しています。これで、Apacheをインストールし、mod_proxyを実行して、ポート80のすべてのリクエストを8080にプロキシできるようにしました。httpd.confファイルには、次のようなものがあります。

LoadModule proxy_module  /usr/lib/apache2/modules/mod_proxy.so

ProxyPass         /ordergeek  http://localhost:8080/appexploded
ProxyPassReverse  /ordergeek  http://localhost:8080/appexploded 

したがって、:8080に直接リクエストを行うと、request.getSession()。getAttribute( "BLAH")はページ間で機能します。ただし、「http://localhost/ordergeek/login.jsp」にアクセスすると、そのページでセッション属性が設定され、別のページにリダイレクトされます。ただし、その次のページはrequest.getSession()。getAttribute( "BLAH")を読み取ろうとしますが、見つかりません。

プロキシを経由しない場合...セッション属性は機能します。私がプロキシを通過するとき、彼らはそうではありません。私は何が欠けていますか?

server.xmlに以下を追加しました。

<Connector port="8080" 
          proxyName="www.myappurl.com"
          proxyPort="80"/>
4

2 に答える 2

2

それは古いものですが、このスレッドは最初のグーグル検索結果に表示され、他の場所ではほとんど答えが見つからなかったので、役立つかもしれません:

Cookieでパスを修正するには、ProxyPassReverseCookiePathディレクティブを追加する必要があります。

ProxyPassReverseCookiePath /appexploded /ordergeek  

この設定が完了すると、通常どおりセッション属性を取得する必要があります。

Apache2.2以降を使用する必要があることに注意してください。

于 2012-11-27T17:41:28.700 に答える
0

Apache HTTPDがパスにある場合、Webアプリケーション名を変更することは非常に困難です。ProxyPassReverseを使用するだけでなく、すべての送信HTMLを変換して、アプリケーションによってそこに配置されたリンクを書き換える必要があります。これを行うサードパーティのmod_proxy_htmlモジュールがありますが、戦略全体を再検討する必要があります。IMHOによるHTMLの書き換えは問題の一部であり、解決策の一部ではありません。Tomcatで内部的にWebアプリの名前を変更するだけです。

于 2012-06-17T22:23:18.857 に答える