1

Ok

そのため、複数のTomcatインスタンスを複数のAJPポートにセットアップし、Apache httpdをポート8090でリッスンしています(現在、すでに8080を使用している別のアプリがあります)。

Jk Mountと次のvhosts構成を使用して、mydomain.com:8090 /demoやmydomain.com:8090/preprodなどのURLをそれぞれのTomcatインスタンスに正常にマッピングしました。

<VirtualHost *:8090>
    JkMount /preprod* preprod
    JkMount /demo* demo
</VirtualHost>

ただし、「ルート」アドレスを別のTomcatインスタンスにマップする必要もあります。これは、ライブ/本番環境になります。つまり、mydomain.com:8090/に3番目のTomcatインスタンスをマップする必要があります。

上記の設定に行を追加しただけでは、現時点では何も起こらず、変更もありません。

JkMount /* rootwar

mydomain.com:8090を参照すると、同じ退屈なApache httpdランディングページが表示され、実行中であることがわかります(つまり、httpd / htdocsのindex.html)

JkMountを使用して「ルート」アドレスのものをTomcatインスタンスにリダイレクトすることは可能ですか?

/ *のようなルールはmydomain.com/preprodのようなURLにも一致することがわかりますが、ルールが順番に適用されることを期待していたので、/ *が最後に表示された場合、事実上「他のいずれかでない場合」になります。環境、次にルート/本番環境に直接

明確にするために、私は次のように設定しようとしています。

mydomain.com:8090/preprod --> myApp running in tomcat1
mydomain.com:8090/demo    --> myApp running in tomcat2
mydomain.com:8090         --> myApp running in tomcat3
4

3 に答える 3

1

わかりましたので、JkMount のフォールスルー動作については正しかったことがわかりました。したがって、構成は次のようになります。

<VirtualHost *:8090>
    JkMount /preprod* preprod
    JkMount /demo* demo
    JKMount /* root
</VirtualHost>

/preprod を含む URL は tomcat1 に、/demo は tomcat2 に、その他はすべて root の tomcat3 にアクセスします。したがって、JkMount /* ルート行は明らかに最後に試行されたルールであり、他のルールのいずれも URL に一致しなかった場合にのみ「すべてをキャッチ」します (つまり、その /*)。

偉大な。

于 2011-03-16T11:00:55.863 に答える
0

OK-あなたの質問に対する直接の答えではありませんが...別の方法は、デモ/プレップロドとプロップのそれぞれを別々のインスタンスで、それぞれ異なるポートで実行することです。

これには構成を簡素化するという利点がありますが、さらに重要なことに、本番インスタンスに影響を与えたりオフラインにしたりすることを心配せずに、各インスタンスに変更を加えることができます(サーバーのバウンスなど)。

Jettyは、このような状況、特に高速でダーティなdevおよびdemoインスタンスを実行する場合にも非常に適しています。基本的に、デプロイメントをポイントし、あるポートでjettyインスタンスを開始する非常に単純なスクリプトを記述できます。

public static void run(int port, String resourceBase, String descriptor) {
    Server server = new Server(port);

    WebAppContext context = new WebAppContext();
    context.setResourceBase(resourceBase);
    context.setDescriptor(descriptor);
    context.setContextPath("/");
    context.setParentLoaderPriority(true);
    server.setHandler(context);

    try {
        server.start();
        server.join();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

どこ

  • resourceBaseは/path/ to/webappです
  • 記述子は通常、resourceBase + "/ WEB-INF/web.xml"です。
于 2011-03-13T09:01:08.110 に答える
0

私はしばらくjkの仕事をしていませんが、私が覚えている限り、これは不可能です。通常、/root jk マウントにリダイレクトする小さな html ページを追加することで、この問題を回避しました。mod_rewrite ルールを使用することもできるかもしれません。

このようなもの:

RewriteEngine on
RewriteRule ^/?(.+)$ /root/$1 

もう少し複雑な書き換えルールを使用してリダイレクトを非表示にすることもできます。例は次のとおりです。

http://www.webmasterworld.com/apache/4277304.htm

于 2011-03-11T09:49:59.840 に答える