mod_proxyを使用してTomcatへのリクエストをプロキシするApachehttpdサーバーを設定し、ポート80でリッスンしています。唯一の問題は、静止画像とcssが正しく表示されないことです。ポート8080でTomcatをサーバーとして単独で使用すると、イメージとcssは正常に表示されます。それらを表示する方法はありますか?ありがとう!
注:私はMacを使用しており、AmazonEC2サーバーを使用しています。例は大歓迎です。
この問題はパス変換に関するもので、アプリケーションをトップレベルの/でクライアントに提供する可能性がありますが、対応するパスは/ 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
したがって、前のディレクティブブロックの前でこれらの行を使用できます。
ついにそれを理解しました-これを読んだときに私を蹴らないでください。私は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スタンドアロンの両方で完全に機能しました。
時間を無駄にしていただきありがとうございます。
apacheには、プロジェクトフォルダーと同じ名前のフォルダーを作成し、その中にリソースを貼り付けてサーバーを再起動するhtdocsフォルダーがあります。
apacheエラーログには、画像の404が含まれ、使用されているURLと次のいずれかに注意してください。