5

コンテキストでTomcatで実行されているWARアプリケーションがあります。/fooつまり、そのURLはhttp://example.com:8080/fooです。現在、 mod_jkを介してApacheHTTPサーバーをTomcatに接続しようとしています。これは私のworkers.propertiesファイルです:

worker.list=foo
worker.foo.port=8009
worker.foo.host=localhost
worker.foo.type=ajp13
worker.foo.mount=/foo/*

正常に動作しますが、このURLでは:http://example.com/foo。にしたいと思いますhttp://example.com。私は何が欠けていますか?

ps。これは私のmod-jk.conf、に含まれていhttpd.confます:

LoadModule jk_module modules/mod_jk.so
JkWorkersFile /usr/local/tomcat/conf/workers.properties
<VirtualHost *:80>
  ServerName foo.example.com
  JkMount /* foo
</VirtualHost>
4

2 に答える 2

11

基本的に2つのオプションがあります。

  1. ルートにWARをマウントするようにTomcat構成を変更します。これがどのように行われるかは、アプリケーションをどの程度正確にデプロイしているかによって異なります。何らかの防止要因がない限り、これはよりクリーンなアプローチです。
  2. mod_rewriteを使用して/から/fooで始まるURLを書き換えることにより、Apache側で問題を処理します。この時点で、URLはJkMountを介してTomcatに渡されます。

2番目のオプションの場合、Apache構成は次のようになります。

# Turn on mod_rewrite
RewriteEngine On
# This is the rule. Use regexp to match any URL beginning with /, and rewrite it to
# /foo/remaining_part_of_URL. The [PT] (pass-through) is necessary to make rewritten
# requests go through JkMount
RewriteRule ^/(.*) /foo/$1 [PT]

# Forward all URLs starting with foo to Tomcat
JkMount /foo/* worker

(これは実際にはテストされていません。そのまま動作することを願っています!)。Apacheでmod_rewriteを有効にする必要がある場合もあります(ディストリビューションを確認してください。mods対応のディレクトリが答えかもしれません)。

また、mod_rewrite(非常に強力な獣)について詳しく知る必要がある場合は、http: //httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewriteruleにアクセスしてください。

于 2011-03-02T00:32:37.667 に答える
0

これがModリライトソリューションです

WORKERS.PROPERTIES

worker.list=worker1
worker.worker1.port=8009
worker.worker1.host=localhost
worker.worker1.type=ajp13
worker.worker1.mount=/foo/*           #THIS IS THE APP NAME: "FOO"

HTTPD.CONF

<VirtualHost *:80>
   RewriteEngine On
   RewriteRule ^/(.*)/Foo/$1 [PT]
   ServerName example.com             #DOMAIN NAME: "example.com"
   ServerAlias www.example.com
   JkMount /foo/* worker1
 </VirtualHost>
于 2013-10-26T06:25:49.640 に答える