2

mod_proxyを使用してTomcatへのリクエストをプロキシするApachehttpdサーバーを設定し、ポート80でリッスンしています。唯一の問題は、静止画像とcssが正しく表示されないことです。ポート8080でTomcatをサーバーとして単独で使用すると、イメージとcssは正常に表示されます。それらを表示する方法はありますか?ありがとう!

注:私はMacを使用しており、AmazonEC2サーバーを使用しています。例は大歓迎です。

4

4 に答える 4

1

この問題はパス変換に関するもので、アプリケーションをトップレベルの/でクライアントに提供する可能性がありますが、対応するパスは/ myapp /になります(たとえば)。tomcatで実行されているサーブレットアプリケーションは、多くの場合、この方法でセットアップされ、複数のアプリケーションを1つに提供します。apacheのセットアップは次のようになります。

ProxyPass / http://localhost:8080/myapp/
ProxyPassReverse / http://localhost:8080/myapp/

あなたのバックエンドアプリケーション(myapp)はこの翻訳を認識せず、それでも通常のパスを渡します。たとえば、アプリケーションが/ myapp / images /の場所にあるtomcatで実行されているアプリケーションによって提供される静的イメージファイルを参照している場合、実行できる方法の1つは、特別なプロキシマッピングを他の書き換えルールとは別に保持することです。

ProxyPass /myapp/images http://localhost:8080/myapp/images

ProxyPassReverse /myapp/images http://localhost:8080/myapp/images

したがって、前のディレクティブブロックの前でこれらの行を使用できます。

于 2012-09-17T13:27:24.663 に答える
1

ついにそれを理解しました-これを読んだときに私を蹴らないでください。私はSpring3でApache2を使用しており、IDEとしてSpringsourceToolSuiteを使用しています。実行できなかった理由は、インデックスjspファイルでこれを使用していたためです。

<link rel="stylesheet" href="<spring:url value="/resources/styles/foo.css" htmlEscape="true" />" type="text/css"/>

重要なのは、Tomcat 7サーバーで実行すると、完璧です。ただし、Tomcatをコンテナーとして使用してApache 2サーバーで実行すると、このcssファイルは表示されませんでした。/だから私はから削除しました/resources/styles/foo.css

<link rel="stylesheet" href="<spring:url value="resources/styles/foo.css" htmlEscape="true" />" type="text/css"/>

その後、Apache+TomcatとTomcatスタンドアロンの両方で完全に機能しました。

時間を無駄にしていただきありがとうございます。

于 2012-09-18T03:46:56.500 に答える
0

apacheには、プロジェクトフォルダーと同じ名前のフォルダーを作成し、その中にリソースを貼り付けてサーバーを再起動するhtdocsフォルダーがあります。

于 2012-09-13T06:01:45.257 に答える
0

apacheエラーログには、画像の404が含まれ、使用されているURLと次のいずれかに注意してください。

  • それらを使用したProxyPassディレクティブと比較し、ProxyPassを修正/追加します
  • それらをWebサーバーのdocumentrootの正しいサブディレクトリにコピーします
于 2012-09-17T12:59:16.887 に答える