2011-03-11 4 views
1

확인/를 포함하여 여러 URL에 대해 여러 개의 tomcats로 전달하는 방법은? 여러 AJP 포트에

그래서있어 여러 톰캣 인스턴스 설정, 나 또한 (이미 순간에 8080을 사용하여 다른 응용 프로그램을 가지고 COS) 아파치가 포트 8090에서 수신 아파치 있습니다.

저는 Jk Mount와 다음 vhosts config를 사용하여 mydomain.com:8090/demo 및 mydomain.com:8090/preprod와 같은 URL을 해당 Tomcat 인스턴스에 매핑했습니다.

<VirtualHost *:8090> 
    JkMount /preprod* preprod 
    JkMount /demo* demo 
</VirtualHost> 

그러나 나는 또한 "루트"주소가 나는 mydomain.com:8090/는 3 바람둥이 인스턴스를 매핑 할 즉, 라이브/생산 될 것입니다 무엇을, 또 다른 바람둥이 인스턴스에 매핑 할.

위의 설정에 행을 추가하면 아무 일도 일어나지 않거나 변경됩니다.

JkMount /* rootwar 

내가 mydomain.com:8090로 이동하면 난 그냥 같은 지루한 아파치 방문 페이지가 나에게 알려 얻을의 실행 (예 : index.html을에서 아파치/htdocs에)

사용하는 것이 가능 "루트"주소를 Tomcat 인스턴스로 리디렉션하는 JkMount?

/*와 같은 규칙이 mydomain.com/preprod와 일치한다는 것을 알 수 있지만 규칙이 순서대로 적용되기를 기대했기 때문에 마지막에/*가 나타나면 실제로 "그렇지 않다면 다른 환경 중 하나가 루트/프로덕션으로 연결됩니다. "

그냥 다음과 같이 설정하려고합니다.

mydomain.com:8090/preprod --> myApp running in tomcat1 
mydomain.com:8090/demo --> myApp running in tomcat2 
mydomain.com:8090   --> myApp running in tomcat3 

답변

1

좋아 일반적으로 resourceBase입니다 rns out 나는 JkMount 물건의 행동을 통해 가을에 대해 옳았다. 그들이 tomcat1있어에서

<VirtualHost *:8090> 
    JkMount /preprod* preprod 
    JkMount /demo* demo 
    JKMount /* root 
</VirtualHost> 

이/preprod와 큰, URL을 작동/데모는 tomcat2로 전환하고 다른 어떤 루트에 대한 tomcat3 간다. 따라서 JkMount/* 루트 라인은 분명히 마지막 규칙이 시도되었고, 다른 규칙이 URL과 일치하지 않으면 "모두 잡는다"(cos/*).

좋아요.

0

나는 jk 자료를 가지고 일하지는 않았지만, 지금까지는 이것을 기억하지 못했습니다. 우리는 대개/root jk 마운트로 리디렉션하는 작은 html 페이지를 추가하여이 문제를 해결했습니다. 어쩌면 mod_rewrite 규칙을 사용하는 것도 효과가있을 수 있습니다. 이 같은

뭔가 :

RewriteEngine on 
RewriteRule ^/?(.+)$ /root/$1 

그것은 조금 더 복잡한 재 작성 규칙에 리디렉션을 숨길 수도 있습니다, 예 여기에서 찾을 수 있습니다 :

http://www.webmasterworld.com/apache/4277304.htm

+0

사실, 가능한 것 같습니다! –

0

확인을 -하지 않는 귀하의 질문에 대한 직접적인 대답,하지만 ... 각각의 다른 포트에 각각 별도의 인스턴스에서 데모/preprod 및 소품 각각을 실행하는 것입니다.

이렇게하면 구성을 단순화 할 수 있지만 더 중요한 것은 프로덕션 인스턴스에 영향을 미치지 않고 오프라인 상태로 만들지 않고도 각 인스턴스를 변경할 수 있다는 것입니다 (예 : 서버 수신 거부).

부두는 또한 이와 같은 상황에 매우 적합합니다. 특히 신속하고 더러운 개발자 및 데모 인스턴스를 실행하는 데 적합합니다.당신은 기본적으로 그냥 배포를 가리키는 어떤 포트에에 부두 인스턴스를 시작하는 매우 간단한 스크립트를 작성할 수 있습니다

  • 을 resourceBase

    public static void run(int port, String resourceBase, String descriptor) { 
        Server server = new Server(port); 
    
        WebAppContext context = new WebAppContext(); 
        context.setResourceBase(resourceBase); 
        context.setDescriptor(descriptor); 
        context.setContextPath("/"); 
        context.setParentLoaderPriority(true); 
        server.setHandler(context); 
    
        try { 
         server.start(); 
         server.join(); 
        } catch (Exception e) { 
         e.printStackTrace(); 
        } 
    } 
    

    것은/경로 /로가/웹 애플리케이션

  • 설명는 + "/ WEB-INF/web.xml에"TU 그래서
+0

이것은 많은 다른 AJP 포트에서 실행되는 많은 Tomcat과 URL 컨텍스트에 따라 포트간에 HTTPD 전달을 수행하는 것과 거의 같습니다. 난 당신이 직접 http 액세스에 대한 다른 외부 커넥터 포트를 말하는 것 같아요,하지만 이러한 tomcat 인스턴스의 대부분은 외부 클라이언트 테스트를 위해 포트 번호를 유지하기 쉬운 우리의 URL을 :) –