2010-12-10 2 views
3

J'ai installé Archiva sur ma machine sous Tomcat 6.x au http://dev.mycompany.com:8080/archiva et je peux accéder à l'application et tout, mais je souhaite y accéder depuis le sous-domaine archiva.mycompany.com. J'ai Apache 2.x s'exécutant sur le port 80 et en utilisant Virtual Hosts et mod_proxy pour acheminer d'autres sous-domaines aux autres divers services que j'exécute sur cette machineMappage d'un sous-domaine à un contexte Servlet à l'aide d'Apache 2.x et Tomcat 6.x

Je veux maintenant créer un sous-domaine archiva.dev.mycompany.com et pointer vers dev.mycompany.com:8080/archiva.

Je ne peux pas comprendre ce que j'ai besoin de mettre dans mes ProxyPass et ProxyPassReverse pour que cela fonctionne comme je le veux.

J'ai essayé ce qui suit et tout ce qu'il fait est d'ajouter /archiva à l'URL encore et encore.

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

et je reçois ce message d'erreur

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

Je suis allé perçai tout ce que je pouvais trouver sur Google une fois encore et essayé ce qui suit:

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

maintenant je reçois juste 404 code d'erreur du Winstone Servlet Engine, je sais que je suis proche.

Quelqu'un peut-il me dire quelle incantation magique j'ai besoin de faire ce comportement comme je le désire?

+0

Cette question doit être posée dans http://serverfault.com/ ou http://superuser.com/ –

Répondre

2

J'ai eu exactement le même problème.

Que faut-il faire:

  • reconfigure archiva avoir archiva en cours d'exécution sur/au lieu de/archiva/

  • proxy inverse configure dans la configuration apache2.

Alors maintenant, j'ai "http: //. Repo [domaine] /" pour principal URL archiva, pointant sur "http: // [domaine]: [port] /"

Voici mon configuration actuelle d'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> 

Et à propos de la conf/jetée.configuration xml:

-remove ceci:

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

+ ajouter ceci:

<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

En passant, je suis prêt à avoir seulement "http: // repo. [Domaine]/pour mon URL archiva principale afin de pouvoir avoir la même URL exactement si un jour je décide de revenir sur Artifactory ou autre chose qu'Archiva – SRG

+0

ouais j'ai eu cette idée de faire l'application ROOT, mais j'ai plusieurs applications, il semble ridicule d'avoir une instance de conteneur de servlet séparée pour chaque application que je veux être un sous-domaine, Archiva, Hudson, etc. –

+0

De mon côté, pour diverses raisons, c'est ce que je fais: je lance chaque application dans un conteneur de servlet séparé, si disponible, souvent via Jetty (Hudson, Archiva, sonar par exemple) Pourquoi? Parce que j'ai eu beaucoup de problèmes de mémoire lors de l'exécution de tous ces dans le même conteneur Tomcat (espace permgen et s o one), beaucoup plus simple maintenant avec des services séparés, chacun s'exécutant sur un port spécifique caché par Apache. – SRG

-1

La raison pour laquelle vous obtenez:

état HTTP 404 -/de archivaarchiva/

est parce que vous n'avez pas terminé votre dernier chemin ProxyPass avec un/mais vous avez terminé la première pat h avec un.

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

deux ProxyPass et ProxyPassReverse doivent se terminer par/

Réécrire (en prenant note de la fin /):

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

voir: http:// httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypass

Si le premier argument se termine avec un trailing /, le second argument devrait aussi se terminer par un trailing/et vice versa. Sinon, les demandes qui en résultent pour le backend peuvent manquer certaines barres obliques et ne fournissent pas les résultats attendus.

+0

relisez ma question et vous verrez que je l'ai essayé dans les deux sens et aucune des deux ne fonctionne correctement. lire pour la compréhension, ne pas simplement scanner la question –