2010-12-10 1 views
3

Tomcat 6.x의 컴퓨터에 Archiva를 http://dev.mycompany.com:8080/archiva으로 설치했고 애플리케이션과 모든 것을 액세스 할 수 있지만 하위 도메인 archiva.mycompany.com.아파치 2.x와 톰캣 6.x를 사용하여 서블릿 컨텍스트에 서브 도메인 매핑하기

포트 80에서 실행중인 Apache 2.x를 사용하고 가상 호스트와 mod_proxy를 사용하여 다른 하위 도메인에서이 컴퓨터에서 실행중인 다른 여러 서비스로 라우팅합니다.

이제 서브 도메인 archiva.dev.mycompany.com을 만들고 dev.mycompany.com:8080/archiva을 가리키고 싶습니다.

내가 원하는대로이 작업을하려면 ProxyPassProxyPassReverse에 넣어야하는 것을 알아낼 수 없습니다.

나는 다음을 시도했다. URL에 /archiva을 반복해서 추가했다.

<VirtualHost *:80> 
    ServerAdmin [email protected] 
    ServerName archiva.dev.mycompany.com 
    ProxyPreserveHost On 

    <Proxy *> 
     Order allow,deny 
     Allow from all 
    </Proxy> 
    ProxyPass/http://dev.mycompany.com:8080/archiva 
    ProxyPassReverse/http://dev.mycompany.com:8080/archiva 
</VirtualHost> 

와 나는 내가 가서 모든 것을 통해 파고 나는 다시 한 번 Google에서 찾을 수있는 다음과 같은 노력

HTTP Status 404 - /archivaarchiva/ 
type Status report 
message /archivaarchiva/ 
description The requested resource (/archivaarchiva/) is not available. 

이 오류 메시지가 얻을 :

ProxyPass/ajp://dev.mycompany.com:8080/archiva/ 
ProxyPassReverse/http://dev.mycompany.com:8080/archiva/ 

지금은 그냥 얻을에게 Winstone 서블릿 엔진의 404 오류 코드.

아무도 내가 원하는대로이 행동을하기 위해 필요한 마법 주문을 말할 수 있습니까?

+0

이 질문은 http://serverfault.com/ 또는 http://superuser.com/ –

답변

2

나는 똑같은 문제가있었습니다.

가해야할 것에 :

  • 재구성 archiva이 archiva 가 아파치 구성에서/대신/archiva/

  • 구성 리버스 프록시에 실행해야 할 수 있습니다. 가리키는, 주요 archiva의 URL에 대한 "/ // REPO [도메인]. HTTP"그래서

는 지금은이에 "http : // [도메인] : [포트] /"

여기 내있어 현재 Apache2 구성 :

ProxyRequests Off 
ProxyPreserveHost On 
<VirtualHost [ip]> 

     ServerName repo.[domain] 
     ProxyPass/http://[ip]:8082/ 
     ProxyPassReverse/http://[ip]:8082/ 

     <Proxy *> 
       Order deny,allow 
       Allow from all 
     </Proxy> 

</VirtualHost> 

및 conf/jetty.XML 구성이 -remove

:

<!-- 
    <Call class="org.mortbay.jetty.webapp.WebAppContext" name="addWebApplications"> 
    <Arg><Ref id="Contexts"/></Arg> 
    <Arg>./apps</Arg> 
    <Arg>org/mortbay/jetty/webapp/webdefault.xml</Arg> 
    <Arg><Ref id="plusConfig"/></Arg> 
    <Arg type="boolean">True</Arg> 
    <Arg type="boolean">False</Arg> 
    </Call> 
--> 

+ 대신 추가 :

<New class="org.mortbay.jetty.webapp.WebAppContext"> 
    <Arg><Ref id="Contexts"/></Arg> 
    <Arg>./apps/archiva</Arg> 
    <Arg>/</Arg> 
    <Set name="configurationClasses"><Ref id="plusConfig"/></Set> 
    </New> 
+0

에 문의해야합니다. 그런데 "http : // repo. [domain]/for 내 메인 archiva URL을 하루에 내가 Artifactory 또는 Archiva보다 뭔가를 다시 전환하기로 결정한다면 정확히 동일한 URL을 가질 수 있습니다. – SRG

+0

그래, 내가 루트 응용 프로그램을 만드는 것에 대한 아이디어가 있었지만 여러 응용 프로그램을 가지고, 그것은 서브 도메인, Archiva, 허드슨, 등등되고 싶은 모든 애플 리케이션을위한 별도의 서블릿 컨테이너 인스턴스를 가지고 말도 안되는 것 같습니다 –

+0

내 측면에서, 다양한 이유로, 내가 뭘하는지 : 나는 각 응용 프로그램을 실행 (같은 허드슨, archiva, sonar 예를 들어.) 왜, 왜냐하면 나는 동일한 Tomcat 컨테이너 (permgen 공간과 s에서 이들 모두를 실행할 때 많은 메모리 문제가 있었기 때문에 o one). 분리 된 서비스로 훨씬 간단 해졌으며, 각 서비스는 Apache를 통해 숨겨진 특정 포트에서 실행됩니다. – SRG

-1

이유는 점점 :

HTTP 상태 404 -/archivaarchiva을/

은 /를 사용하여 ProxyPass의 마지막 경로를 끝내지 않았기 때문에 발생하지만 첫 번째가 끝났습니다. h로 하나.

ProxyPass로/http://dev.mycompany.com:8080/archiva

모두 ProxyPass로 및 ProxyPassReverse은 (결말의 복용 노트 /)에/

재 작성로 끝나야합니다 :

ProxyPass로/http://dev.mycompany.com:8080/archiva/

참조 : HTTP :// httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypass

첫 번째 인수가 끝나면/뒤에는 두 번째 인수도 /로 끝나야하며 그 반대도 마찬가지입니다. 그렇지 않으면 백엔드에 대한 결과 요청이 일부 필요한 슬래시를 놓치고 예상 된 결과를 제공하지 못할 수 있습니다.

+0

내 질문을 다시 읽고 두 방법을 시도하고 어느 쪽이든 제대로 작동하는지 알 수 있습니다. 이해를 위해 읽으십시오. 질문을 스캔하지 마십시오. –

관련 문제