Virtual Hostで特定のドメインのみApache2+Tomcat連携する設定
ApacheのVirtual Hostで特定のドメインのみ、Tomcat連携する設定のメモです。
もろもろのバージョンによって設定方法は異なりますが、今回設定を行ったのは以下の環境です。
<virtualhost *:80> ServerName example.com DocumentRoot /var/www/example/htdocs ・・・中略・・・ <Location "/java/*"> JkUriSet worker ajp13:localhost:8009 </Location> </virtualhost>
上記はexample.com/java配下の全てのURIリクエストをTomcatアプリケーションと連携する設定になっています。
拡張子がjspのリクエストだけを連携する場合は以下のような形になります。
<Location "/java/*.jsp"> JkUriSet worker ajp13:localhost:8009 </Location>
次にtomcatの/conf/server.xmlを設定します。
<Engine name="Catalina" defaultHost="localhost"> ・・・中略・・・ <Host name="example.com" debug="0" unpackWARs="true" autoDeploy="true"> <Logger className="org.apache.catalina.logger.FileLogger" directory="logs" prefix="example.com." suffix=".log" timestamp="false"/> <!-- Context Root --> <Context path="" docBase="/usr/local/tomcat/webapps" debug="0" reloadable="true" crossContext="false"> </Context> </Host>
docBaseはwebappsのpathに合わせて設定します。
httpd.confのLocation設定でドキュメントルート以外を設定した場合でも、web.xmlのurl-patternではドキュメントルートから設定する必要があります。
例えば、上記の例のように「
<servlet> <servlet-name>index</servlet-name> <servlet-class>com.example.IndexPage</servlet-class> </servlet> <servlet-mapping> <servlet-name>index</servlet-name> <url-pattern>/java/</url-pattern> </servlet-mapping>
詳しくは以下のドキュメントを参照して下さい。
Apache 2.0.43 - Tomcat 4.1.12 - jk2 - virtual host HOWTO
http://tomcat.apache.org/connectors-doc-archive/jk2/jk2/vhosthowto.html