Spring MVC Web アプリケーションを Tomcat にデプロイし、Apache Web サーバーの背後に隠します。Tomcat と Apache の両方を同じ物理マシンに展開していますが、Tomcat はポート 81 にあり、Apache はポート 80 にあります。
Apache は、リクエストを Tomcat にリダイレクトするように構成されています。私の Web アプリケーションでは、c:url
タグ (JSTL/core) を使用して URL を適切にフォーマットしています。これは、Tomcat に直接アクセスするときは問題なく動作しますが、Apache 経由で Tomcat にアクセスすると、URL が間違っています。
http://localhost:81/MyWebApplication/
したがって、Tomcat に直接アクセスする場合は で、Apache 経由でアクセスする場合は で Web アプリケーションを使用できます http://sub.domain/
。
私が理解している限り、問題は、Apache が Tomcat に送信するリクエストは実際には のような実際のものhttp://localhost:81/MyWebApplication/something
であるため、JSP がレンダリングされるc:url
と、これらの実際のリクエストに基づいて構築され、アプリは にデプロイされていると認識しlocalhost:81
ます。
同じマシン上に同じ方法で構成された他のアプリケーション (Java だけでなく) がたくさんあり、それらが正常に動作するという理由だけで、Apache 構成に変更を加えたくないのです。
質問は:
すべての JSP で使用できるベース URL を明示的に定義する最も適切な方法は何ですか? c:url
理想的には、のベース URL を使用したい正しい URL に変更するだけでよいでしょう。