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