3

でTomcat6.xの下のマシンにArchivaをインストールしhttp://dev.mycompany.com:8080/archiva、アプリケーションとすべてにアクセスできますが、サブドメインからアクセスしたいと思いますarchiva.mycompany.com

ポート80でApache2.xを実行し、仮想ホストとmod_proxyを使用して、他のサブドメインからこのマシンで実行している他のさまざまなサービスにルーティングしています。

次に、サブドメインを作成し、archiva.dev.mycompany.comそれをにポイントしdev.mycompany.com:8080/archivaます。

自分に何を入れて、これを思い通りに機能させる必要があるのか​​理解できませProxyPassProxyPassReverse

私は次のことを試しましたが/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/

Winstoneサーブレットエンジンから404エラーコードを取得しました。近づいています。

誰かが私がこれを私が望むように振る舞わせるために必要な魔法の呪文を教えてもらえますか?

4

2 に答える 2

2

私はまったく同じ問題を抱えていました。

何をしなければならないか:

  • /archiva/ではなく/でarchivaを実行するようにarchivaを再構成します

  • apache2構成でリバースプロキシを構成します。

これで、メインのarchiva URLに「http://repo。[domain]/」があり、「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>
于 2011-03-02T19:35:36.347 に答える
-1

あなたが得ている理由:

HTTPステータス404-/archivaarchiva/

ProxyPassの最後のパスを/で終了しなかったが、最初のパスを1で終了したためです。

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

最初の引数が末尾の/で終わる場合、2番目の引数も末尾の/で終わる必要があります。その逆も同様です。そうしないと、バックエンドへの結果のリクエストで必要なスラッシュが欠落し、期待した結果が得られない可能性があります。

于 2013-02-15T05:29:35.977 に答える