Отображение субдомена в контекст сервлета с использованием Apache 2.x и Tomcat 6.x - PullRequest
3 голосов
/ 10 декабря 2010

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

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

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

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

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

<VirtualHost *:80>
    ServerAdmin me@mycompany.com
    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, я знаю, что я близко.

Может кто-нибудь сказать мне, какое магическое заклинание мне нужно, чтобы заставить его вести себя так, как я хочу?

Ответы [ 2 ]

2 голосов
/ 02 марта 2011

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

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

  • перенастроить архив, чтобы иметь архив работает на / вместо / архив / / 1007 *

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

Так что теперь у меня есть "http://repo.[domain]/" для основного архива URL, указывающего на" http://[domain]:[port]/"

Вот моя текущая конфигурация 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:

- убрать это:

<!--
  <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 голосов
/ 15 февраля 2013

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

Статус HTTP 404 - / archivaarchiva /

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...