3

Apache仮想ホストとmod_proxyを使用して、ポート8080のjettyインスタンスで使用可能なJavaアプリケーション(myapp)にアクセスしたいと思います。

Apache仮想ホスト構成では、 www.mydomain.com ProxyPass / localhost:8080// myappを使用してjettyで実行されているアプリケーションにアクセスできますが、www.mydomain.comからアプリケーションにアクセスする必要があります。

リクエストがwww.mydomain.com/myappmyapp/ProxyPass / localhost:8080/myappになるため、アプリケーションが見つかりません。

次に、試してみました:

<Location />
        ProxyPass localhost:8080/myapp/
        SetEnv force-proxy-request-1.0 1
        SetEnv proxy-nokeepalive 1
</Location>

アプリケーションにアクセスできますが、最初のリクエストのみです。後続のリクエストはwww.mydomain.com/myappmyapp/になります

wiki.eclipse.org/Jetty/Tutorial/Apacheとapachemod_proxydocsを何度も読んだ後、www.mydomain.comからアプリケーションを適切に使用するために管理した唯一の方法は、次の構成を使用することです。

<Location /myapp/>
        ProxyPass localhost:8080/myapp/
        SetEnv force-proxy-request-1.0 1
        SetEnv proxy-nokeepalive 1
</Location>

<Location />
        ProxyPass localhost:8080/myapp/
        SetEnv force-proxy-request-1.0 1
        SetEnv proxy-nokeepalive 1
</Location>

したがって、どちらの場合も、要求は突堤アプリケーションに転送されます。

私はapacheとjettyにまったく慣れていません。同じ結果を達成するための、より優れた、よりエレガントな方法があると確信しています。実際、apacheは次のように不平を言っています。

[warn] worker localhost:8080/myapp/ already used by another worker
4

3 に答える 3

1

問題は、コンテキスト パス /myapp を使用して jetty にアプリケーションをデプロイすると、それに応じてすべてのリンクが生成されることです。Apache mod_proxy は、HTTP レベル (ヘッダー) ですべての書き換えを行い、応答本文には何もせず、そのままにします。

/myapp が残っても構わない場合は、mod_rewrite をオンにして、Location ブロックに次の 2 行を含めることができます。

RewriteEngine on
RewriteRule ^/myapp/(.*)$ /$1 [P]

/myapp を完全に削除したい場合、残っている唯一のオプションは (mod_proxy_html で CPU パワーを浪費したくない場合)、仮想ホストを構成し、コンテキスト パスが / の仮想ホストにアプリケーションをデプロイすることです。

于 2011-03-02T23:18:54.080 に答える
0

サイトのルートで Web アプリケーションにアクセスできるようにする場合は、Web アプリケーションをコンテナーのルートにデプロイする必要があります。通常、これは代わりにwarファイルを呼び出すことによって行われます(ただし、これは最終的に Jetty デプロイヤーの構成に依存し、デフォルトよりも複雑になる場合があります)。ROOT.warmyapp.war

于 2010-08-25T23:28:47.133 に答える
0

はい、jetty ルートから動作しますが、複数のアプリケーションを実行したいと考えています。myapp の構成は、jetty の contexts フォルダーの下にあります。

<Configure class="org.mortbay.jetty.webapp.WebAppContext">
  <Set name="contextPath">/mvc-showcase</Set>
  <Set name="war"><SystemProperty name="jetty.home"/>/webapps/mvc-showcase.war</Set>
</Configure>

私の桟橋のバージョンは6.1.22です

于 2010-08-27T08:02:16.243 に答える