2010-12-10 4 views
3

Я установил Archiva на своей машине под Tomcat 6.x по адресу http://dev.mycompany.com:8080/archiva и могу получить доступ к приложению и всему, но я хочу получить к нему доступ из субдомен archiva.mycompany.com.Сопоставление субдомена с контекстом сервлета с использованием Apache 2.x и Tomcat 6.x

У меня Apache 2.x работает на порту 80 и с помощью виртуальных хостов и mod_proxy для маршрутизации из других поддоменов в другие различные службы, которые я запускаю на этом компьютере.

Теперь я хочу создать субдомен archiva.dev.mycompany.com и указать его на dev.mycompany.com:8080/archiva.

Я не могу понять, что мне нужно положить в мои ProxyPass и ProxyPassReverse, чтобы сделать эту работу, как я ее хочу.

Я пробовал следующее, и все, что он делает, добавляет /archiva к URL снова и снова.

<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> 

и я получаю сообщение об ошибке

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

я пошел и закопал через все, что я мог бы найти на Google еще раз и попробовал следующее:

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

теперь я просто получаю 404 код из Winstone Servlet Engine, я знаю, что приближаюсь.

Может ли кто-нибудь сказать мне, какое волшебное заклинание мне нужно, чтобы это подействовало так, как я желаю?

+0

Этот вопрос должен быть задан на http://serverfault.com/ или http://superuser.com/ – 2010-12-28 08:20:06

ответ

2

У меня была такая же проблема.

Что нужно сделать:

  • перенастроить Archiva иметь Archiva работает на/вместо/Archiva/

  • настроить обратный прокси-сервер в конфигурации apache2.

Так что теперь у меня есть "HTTP:. // репо [домен] /" для основного Archiva URL, указывая на "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/пристани.конфигурации 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 мой главный URL-адрес архива, чтобы иметь один и тот же URL-адрес, если в один прекрасный день я решит переключиться на Artifactory или что-то еще, чем Archiva. – SRG 2011-03-02 19:52:54

+0

Да, у меня была идея создать приложение ROOT, но у меня есть несколько приложений, кажется смешным иметь отдельный экземпляр контейнера сервлета для каждого приложения, которое я хочу быть поддоменом, Archiva, Hudson и т. д. – 2011-03-02 20:10:27

-1

Причина вы получаете:

HTTP Status 404 -/archivaarchiva/

- это потому, что вы не закончили свой последний прокси-сервер с помощью /, но вы закончили первый штрих ч с одним.

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

как ProxyPass и ProxyPassReverse должны заканчиваться/

Rewrite к (принимая к сведению окончание /):

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

см: HTTP:// httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypass

Если первый аргумент заканчивается с завершающим /, второй аргумент должен также заканчиваться конечным/и наоборот. В противном случае результирующие запросы к серверу могут пропустить некоторые необходимые косые черты и не доставить ожидаемых результатов.

Смежные вопросы