2013-06-19 6 views
1

ARR 및 다시 쓰기 규칙을 사용하여 Tomcat 응용 프로그램에 쉽게 액세스했습니다.동일한 포트를 사용하는 두 개의 Tomcat 서버, iis에 대한 규칙 다시 쓰기

는 응용 프로그램이 실행되는 경우와 마찬가지로 : 재 작성 규칙 후 http://localhost:8090/alfresco

에 액세스 할 수 있습니다 : 여기

http://localhost/alfresco 내가 그 완벽 작동 사용 된 재 작성 규칙의 예입니다

<rule name="ReverseProxyInboundRule1" enabled="true" stopProcessing="true"> 
    <match url="(alfresco.*)" /> 
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> 
     <add input="{CACHE_URL}" pattern="^(http?)://" /> 
    </conditions> 
    <action type="Rewrite" url="{C:1}://localhost:8090/{R:1}" /> 
</rule> 

이제 내가 직면하고있는 문제는 동일한 Tomcat 응용 프로그램 이름과 포트가있는 다른 로컬 서버가 있다는 것입니다. 지금은 내가 방문 할 때 있도록 재 작성 규칙을 개발하려는 : http://localhost/alfresco1

이 URL이 해당 서버에 데려다해야합니다 http://172.23.1.168:8090/alfresco

+0

다시 쓰기에서 역 참조를 사용하는 이유가 있습니까? 나의 요점은''alfresco'는'http : // localhost : 8090/alfresco'와'http : //172.23.1.168 : 8090/alfresco'에서 상수입니까? – cheesemacfly

+0

실행중인 tomcat 응용 프로그램의 주요 문제점은 'alfresco'입니다. 위에서 작성한 규칙은 url을 'alfresco'라는 이름으로 매칭합니다. 그래서 '172.23.1.168'에 대한 또 다른 규칙을 만들고 'localhost'대신 규칙에 작성하면 '172.23.1.168/alfresco'가 아닌 'localhost'로 이동하게됩니다. 그들은 둘 다 동일한 URL matcing을 가지고 있기 때문입니다. – user1788171

답변

1

다음과 같은 구성을 사용할 수 있습니다

<rule name="ReverseProxyInboundRule1" enabled="true" stopProcessing="true"> 
    <match url="^(alfresco)1/?(.*)" /> 
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> 
     <add input="{CACHE_URL}" pattern="^(http?)://" /> 
    </conditions> 
    <action type="Rewrite" url="{C:1}://172.23.1.168:8090/{R:1}/{R:2}" /> 
</rule> 
<rule name="ReverseProxyInboundRule1" enabled="true" stopProcessing="true"> 
    <match url="^(alfresco)/?(.*)" /> 
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> 
     <add input="{CACHE_URL}" pattern="^(http?)://" /> 
    </conditions> 
    <action type="Rewrite" url="{C:1}://localhost:8090/{R:0}" /> 
</rule> 

무엇 그렇습니다 : URL이 alfresco1 시작

  • 경우는을 사용 http://172.23.1.168:8090/alfresco/requested_path에 다시 작성및 {R:2}back references.
  • URL이 alfresco으로 시작하는 경우 일치하는 문자열 back reference을 사용하여 URL을 http://localhost:8090:8090/alfresco/requested_path으로 다시 씁니다.

    규칙들은 규칙이 구성 파일에 정의되어

    순서입니다 지정되는 순서대로 평가됩니다

이 구성은 the fact을 기반으로 중대한.

+0

감사하지만, "alfresco1"을 입력하면 테스트 패턴이 확인됨에 따라 여전히 "야외"로 해석됩니다. – user1788171

+0

아, 미안 그들이 주문을 작동하면 먼저 "alfresco1"규칙을 작성해야합니다. 올바른 경로로 때때로 해석됩니다. – user1788171

+0

@ user1788171 예, 혼란에 대해 사과드립니다. 내 대답을 편집하고 패턴을 변경하여'/'선택 사항으로 만들었습니다. – cheesemacfly