2016-09-08 3 views
0

Im Rahmen der Aktualisierung einer Legacy-Java-Anwendung (im Weblogic-Cluster gehostet) wird ein Abschnitt dieser Anwendung durch eine einzelne Seitenanwendung (REACT) ersetzt über eine API zu verschiedenen Diensten, die migrierte Backend-Funktionalität enthalten. Für den Moment, bis alle UI-Abhängigkeiten von der Legacy-Anwendung portiert sind, wird der REACT SPA weiterhin in einer JSP-Seite gehostet (einige gängige JSP-Codes wurden nicht portiert und sind daher auf der JSP-Seite vorhanden, auf der die reaktive App gehostet wird).Verwendung von Apache als Proxy für eine Einzelseitenanwendung im Weblogic-Cluster

Die Infrastruktur, die dieses Setup hostet, ist derzeit ein Apache-Server, der je nach Bedarf zum Weblogic-Cluster oder zu neueren Diensten routet. Proxying auf das WebLogic Cluster einfach vorher war, wie alle * .jsp Seiten mit einem einfachen weblogic Plugin Block zum Cluster weitergeleitet wurden:

<IfModule mod_weblogic.c> 
    WebLogicCluster server1:port,server2:port 
    MatchExpression *.jsp 
</IfModule> 

jedoch mit dem neuen SPA, ich brauche auch eine ganze Reihe von Routen zu Proxy zu einer einzelnen .jsp-Seite, die mein SPA enthält. Wenn mein Ziel nur Proxy durch Pfad war, konnte ich das leicht mit Apache weblogic Plugin lösen:

<Location /newSection/> 
    WLSRequest On 
    WebLogicCluster server1:port,server2:port 
    PathTrim /newSection/ 
    PathPrepend SPA.jsp 
    DefaultFileName SPA.jsp 
</Location> 

Das funktioniert jedoch nur für die Basis/newSection/url als URL wie

http://host/newSection/spa-route 

ruft

http://host/SPA.jsp/spa-route 

, die offensichtlich nicht gültig ist.

Keine Menge PathTrim, PathPrepend, oder irgendetwas anderes ich versuche, für die WebLogic-Plugin löst das Problem, dass ich durch den Pfad zu einem einzelnen URI-Proxy versuchen (alles Proxy muss http://host/SPA.jsp, Griffe SPA-Router den Rest)

Ich experimentiere gerade mit mod_rewrite und mod_proxy anstatt, wie RewriteRule [P] mir erlaubt, zu einem einzelnen URI auf dem Cluster zu proxy (cluster IP kommend vom Proxy Balancer). Allerdings ist dies viel komplizierter einzurichten (immer noch versuchen), und ich muss Dinge wie Session Stickiness selbst implementieren.

Eine Lösung für die Verwendung des mod_weblogic-Plugins für den Proxy zu einem bestimmten URI wäre großartig, aber Beispiele für die Verwendung von mod_rewrite, mod_proxy und/oder mod_proxy_balancer, um dieses Proxying auf einen einzelnen URI in einem Weblogic-Cluster zu erreichen sehr hilfreich sein.

Antwort

0

Es stellte sich heraus, dass eine Apache-Funktion (Passthrough) mir nicht bewusst war (oder zumindest wie genau es funktioniert), die Apache Rewrite-Regeln auf das Weblogic-Plugin schön überbrücken kann.

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

Der Pass-Through schreibt die URI http://host/SPA.jsp OHNE eine Rewrite zu tun. Der Passthrough leitet diesen neuen URI dann explizit durch den Regel-Stack und andere Module zurück. An dieser Stelle hatte die ursprüngliche Weblogic-Plugin-Regel, dass ich Proxies per MIME-Typ an den Cluster (* .jsp) habe, den URI aufgreifen und gut funktionieren.

Auf diese Weise Apache kümmert sich um das Umschreiben einer Reihe von Pfaden zu einem bestimmten URI, und das Weblogic-Plugin kümmert sich schön um den Rest (Proxying zu Cluster, Load Balancing, Sticky-Sitzungen, etc.))

0

Hier ist, wie Sie WebLogic-Plugin verwenden, um einzelne URLs zu richten, wie pro Ihre Anforderung gerne Optionen ändern:

eine Datei virtuellen Host erstellen:

<VirtualHost *:80> 
     SSLEngine on 
     ServerName fqdn 
     ServerAlias alias 
     ServerAdmin [email protected] 
     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> 
Verwandte Themen