2016-09-08 2 views
0

레거시 Java 응용 프로그램 (Weblogic 클러스터에서 호스팅 됨)을 업그레이드하는 과정에서이 응용 프로그램의 한 섹션이 단일 페이지 응용 프로그램 (REACT)으로 교체되고 API를 통해 마이그레이션 된 백엔드 기능을 포함하는 다양한 서비스로 마이그레이션합니다. 지금까지는 모든 UI 의존성이 레거시 애플리케이션에서 포팅 될 때까지 REACT SPA는 여전히 JSP 페이지 내에서 호스팅 될 것입니다 (일부 일반적인 JSP 코드는 포팅되지 않았으므로 반응 애플리케이션을 호스팅하는 JSP 페이지에도 나타납니다).Weblogic 클러스터에서 단일 페이지 응용 프로그램에 Apache를 사용하는 방법

이 설치를 호스팅하는 인프라는 현재 Apache 서버이거나 필요에 따라 Weblogic 클러스터 또는 더 새로운 서비스로 라우팅합니다. 모든 * .jsp로 페이지는 간단한 웹 로직 플러그인 블록과 클러스터에 들어간으로 웹 로직 클러스터에 프록시가 이전에 간단했다 : 새로운 SPA와 그러나

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

, 나는 또한 프록시 경로의 전체 집합이 필요합니다 내 SPA가 포함 된 단일 .jsp 페이지로 이동하십시오. 내 목표는 경로 별 프록시에 있었다면, 나는 아파치 웹 로직 플러그인 쉽게 그것을 해결할 수 : 같은 URL로, 기본/newSection/URL에 대한

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

그러나이 단지 작품

http://host/newSection/spa-route 

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

으로 분명히 유효하지 않습니다.

PathTrim, PathPrepend, 또는 내가 웹 로직 플러그인에 노력하고 아무것도 아무리 내가 하나의 URI의 경로에 의해 프록시에 노력하고 문제를 해결

(모든 http://host/SPA.jsp에 프록시 필요 SPA 라우터는 나머지를 처리합니다)

RewriteRule [P]는 클러스터의 단일 URI (프록시 밸런서에서 오는 클러스터 IP)로 프록시를 허용하기 때문에 mod_rewrite와 mod_proxy를 사용하여 실험하고 있습니다. 그러나 이것은 설정하는 것이 훨씬 더 복잡합니다 (여전히 시도 중). 세션 저장 기능과 같은 것들을 직접 구현해야합니다.

특정 URI로 프록시하기 위해 mod_weblogic 플러그인을 사용하는 방법에 대한 해결책은 좋지만 mod_rewrite, mod_proxy 및/또는 mod_proxy_balancer를 사용하여 웹 로직 클러스터의 단일 URI에이 프록시를 수행하는 방법의 예는 매우 도움이 될 것입니다.

답변

0

아파치 재 작성 규칙을 weblogic plugin에 연결하는 것을 잘 알고 있지 못했던 아파치 기능 (Passthrough)이있었습니다.

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

패스 스루는 재 작성하지 않고 http://host/SPA.jsp에 URI를 다시 작성합니다. 패스 스루는 새로운 URI를 규칙 스택 및 다른 모듈을 통해 명시 적으로 전달합니다. 이 시점에서 원래의 weblogic plugin 규칙에서 MIME 유형별로 프록시 (* .jsp)를 사용하여 URI를 선택하고 잘 작동합니다.

이 방법은 Apache가 특정 URI에 대한 경로 집합을 다시 작성하는 것을 처리하고 weblogic 플러그인이 나머지 작업 (클러스터에 대한 프록시,로드 균형 조정, 고정 세션 등)을 처리합니다.)

다음
0

는 개별 URL을 직접 웹 로직 플러그인을 사용하는 방법, 당신의 필요에 따라 옵션을 변경 주시기입니다 :

가상 호스트 파일 만들기 :

<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> 
관련 문제