リバース プロキシの背後にある、次のものを含む JSP ページを考えてみましょう。
前者は、 mod_proxy_html を使用して を書き換えることで対処できますがlink
、スクリプト要素を詳しく調べることはできません。-D 経由で正しい URL を渡し、pageContext.request.contextPath をオーバーライドするよりも良い解決策はありますか?
<link rel="stylesheet"
href="${pageContext.request.contextPath}/services/legendcss/legend.css?version=2"
type="text/css"/>
<script>
var bt_wd40_appurl = "${pageContext.request.contextPath}/services";
</script>
明確にするために、おそらく:
で到達可能な Tomcat のコピーhttp://internalhost.com
と、 でパブリック インターネット上で到達可能な Apache2 のコピーを考えてみましょうhttp://externalhost.com
。
Apache インスタンスの構成には、 からhttp://externalhost.com/blue/green/
にマップするリバース プロキシが含まれていますhttp://internalhost.com/yellow
。
現在、「黄色」にあるのは webapp であり、javascript を使用した web ページで構成されており、黄色の webapp 内でも web サービスと通信する必要があります。これらのものにパス名を焼き付けたくはありません。上記のコードは、「internalhost」URL をブラウザーに配信しますが、ブラウザーはそれらと通信できません。「externalhost」URL を配信するために必要です。
プロキシの存在は言うまでもなく、デプロイされている URL を想定するコードを JSP や HTML に含めないことを好みます。