レガシー Java アプリケーション (Weblogic クラスターでホストされている) のアップグレードの一環として、このアプリケーションの 1 つのセクションがシングル ページ アプリケーション (REACT) に置き換えられ、移行されたバックエンド機能を含むさまざまなサービスを API 経由で呼び出します。今のところ、すべての UI 依存関係がレガシー アプリケーションから移植されるまで、REACT SPA は引き続き JSP ページ内でホストされます (一部の一般的な JSP コードは移植されていないため、react アプリをホストする JSP ページに存在します)。
このセットアップをホストするインフラストラクチャは現在 Apache サーバーであり、必要に応じて Weblogic クラスターまたは新しいサービスにルーティングされます。以前は、すべての *.jsp ページが単純な weblogic プラグイン ブロックを使用してクラスターにルーティングされていたため、weblogic クラスターへのプロキシは簡単でした。
<IfModule mod_weblogic.c>
WebLogicCluster server1:port,server2:port
MatchExpression *.jsp
</IfModule>
ただし、新しい SPA では、SPA を含む単一の .jsp ページにプロキシするための一連のルートも必要です。私の目標がパスによるプロキシのみである場合、Apache weblogic プラグインを使用して簡単に解決できます。
<Location /newSection/>
WLSRequest On
WebLogicCluster server1:port,server2:port
PathTrim /newSection/
PathPrepend SPA.jsp
DefaultFileName SPA.jsp
</Location>
ただし、これはベースの /newSection/ URL に対してのみ機能し、次のような URL として機能します。
http://host/newSection/spa-route
にプロキシされます
http://host/SPA.jsp/spa-route
これは明らかに有効ではありません。
PathTrim、PathPrepend、または weblogic プラグインのために試したその他のことは、単一の URI へのパスによってプロキシしようとしている問題を解決しません (すべてをhttp://host/SPA.jspにプロキシする必要があり、SPA ルーター ハンドル残り)
現在、代わりに mod_rewrite と mod_proxy を使用して実験しています。RewriteRule [P] を使用すると、クラスター上の単一の URI (プロキシ バランサーからのクラスター IP) にプロキシできるからです。ただし、これはセットアップがはるかに複雑で (まだ試行中です)、セッションの固定性などを自分で実装する必要があります。
mod_weblogic プラグインを使用して特定の URI にプロキシする方法の解決策は素晴らしいですが、mod_rewrite、mod_proxy、および/または mod_proxy_balancer を使用して weblogic クラスタ上の単一の URI にプロキシする方法の例は非常に役立ちます。良い。