1

作为升级遗留 Java 应用程序(托管在 Weblogic 集群上)的一部分,该应用程序的一部分将被单页应用程序 (REACT) 替换,通过 API 调用包含已迁移后端功能的各种服务。目前,直到所有 UI 依赖项都从遗留应用程序中移植出来,REACT SPA 仍将托管在 JSP 页面中(一些常见的 JSP 代码尚未移植,因此将出现在托管反应应用程序的 JSP 页面上)。

托管此设置的基础架构当前是 Apache 服务器,根据需要路由到 Weblogic 集群或更新的服务。代理到 weblogic 集群之前很简单,因为所有 *.jsp 页面都通过一个简单的 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

这显然是无效的。

我为 weblogic 插件尝试的任何 PathTrim、PathPrepend 或其他任何东西都无法解决我试图通过路径代理到单个 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 的示例将非常有帮助,因为好。

4

2 回答 2

1

原来有一个我不知道(或者至少它是如何工作的)的 apache 特性(Passthrough)可以很好地将 Apache 重写规则连接到 weblogic 插件。

RewriteRule /newSection/.*$ /SPA.jsp  [PT,L]

直通将 URI 重写为http://host/SPA.jsp而不进行重写。然后,直通通过规则堆栈和其他模块显式地将该新 URI 传递回。在这一点上,我通过 MIME 类型代理到集群 (*.jsp) 的原始 weblogic 插件规则将获取 URI 并正常工作。

这样,Apache 负责重写一组特定 URI 的路径,而 weblogic 插件则很好地处理其余部分(代理到集群、负载平衡、粘性会话等)

于 2016-09-13T17:28:30.897 回答
0

以下是您如何使用 weblogic 插件来引导单个 url,请随时根据您的要求更改选项:

创建一个虚拟主机文件:

<VirtualHost *:80>
        SSLEngine on
        ServerName fqdn
        ServerAlias alias
        ServerAdmin webmaster@localhost
        Header always append X-Frame-Options DENY
        DocumentRoot /var/apache2/htdocs

        <Directory /var/apache2/htdocs>
            Options -Indexes +FollowSymLinks
            AllowOverride None
            Require all granted
        </Directory>

<IfModule mod_weblogic.c>
    debug ERR
    FileCaching on
    WLIOTimeoutSecs 600
    Idempotent ON
    FileCaching ON
    DynamicServerList ON
    KeepAliveEnabled OFF

<Location /newsection>
        SetHandler weblogic-handler
        WebLogicCluster host1:port,host2:port
</Location>
<Location /newsection/SPA.jsp>
        SetHandler weblogic-handler
        WebLogicCluster host3:port,host4:port
</Location>
<Location /SPA.jsp>
        SetHandler weblogic-handler
        WebLogicCluster host5:port,host6:port
</Location>

</IfModule>
</VirtualHost>
于 2016-09-14T17:22:46.357 回答