2

Ubuntu 12.10 で Tomcat を実行しており、webapp がインストールされています。Tomcat (localhost:8080/webappname) を使用してアクセスすると正常に動作します。このメソッドを使用したサーブレットへのリクエストは、Tomcat アクセス ログに /webappname/servlet/servletname として表示されます。ただし、代わりに apache httpd を使用して静的 http ファイルをホストすることをお勧めします。したがって、mod_jk をインストールして構成しました。

問題は、httpd サーバーからの要求が Tomcat ログ /servlet/servletname に表示され、前に webapp 名がないため、404 が返されることです。

追加してみました:

RewriteEngine On
RewriteRule ^/servlet/(.*)& /webappname/servlet/$1 [PT] 

Apacheの仮想ホスト構成に追加しましたが、これは機能しませんでした. 書き換えが mod_jk に渡されるかどうかはわかりません。

この問題に取り組む最善の方法は何ですか? httpd サーバーでリクエストを書き換える必要がありますか、または Tomcat にリクエストを特定の Web アプリケーションに転送するように指示する方法はありますか?

編集:

これらの行は、仮想ホスト構成にあります。

JkMount /servlet/ ajp13
JkMount /servlet/* ajp13

これは mod_jk の構成ファイルです。

    <IfModule jk_module>
JkWorkersFile /etc/apache2/jk_workers.properties
JkLogFile /var/log/apache2/mod_jk.log
JkLogLevel info
JkShmFile /var/log/apache2/jk-runtime-status
JkWatchdogInterval 60
<Location /jk-status>
    # Inside Location we can omit the URL in JkMount
    JkMount jk-status
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Location>
<Location /jk-manager>
    # Inside Location we can omit the URL in JkMount
    JkMount jk-manager
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Location>

ワーカーのプロパティ ファイルは次のとおりです。

worker.list=ajp13
worker.ajp13.type=ajp13
worker.ajp13.host=localhost
worker.ajp13.port=8009
worker.ajp13.lbfactor=50
worker.ajp13.cachesize=10
worker.ajp13.cache_timeout=600
worker.ajp13.socket_keepalive=1
worker.ajp13.socket_timeout=300
max_packet_size=65536
4

1 に答える 1

2

以下を使用する必要があります。

JkMount /webappname/servlet/ ajp13
JkMount /webappname/servlet/* ajp13
于 2013-06-25T20:33:02.843 に答える