2011年7月9日土曜日

mod_proxyを使って、Apacheとtomcatを結合させたい

tomcatを使って動的コンテンツを処理する場合、Apache 単体よりも高速で処理することができます。つまりtomcatを使うことで、パフォーマンスの向上が期待できます。
一方、Apacheには多くの支援ソフトウェアが蓄積されていて、Webサイトを構成するパーツとして連携させることができます。
tomcatとApacheを連携させることで、両方の長所をうまく引き出すことが可能です。


■ポートを指定した結合
Apacheとtomcatの使われているポートは違います。デフォルトの設定は下のようになっています。
Apache : 80
tomcat : 8080

プラウザでポート番号指定のないURL(http://localhost/)が指定された場合、そのサイト上のポート80に対して接続を試みます。ポート番号が指定された場合(http://localhost:8080/)、そのサイト上のポート8080に対して接続を試みます。
なので、tomcatが扱うJSPページを見にいくには、ポートで8080を指定すればいい、ということです。

/usr/local/tomcat/webapps/prime/hello2.jsp (tomcat)
<html>                                        
<head>
        <title>hello</title>
</head>
<body>
        <h1>hello</h1>
</body>
</html>

/var/www/html/tomcat_test1.html (Apache)
<html>                                        
<head>
        <title>tomcat test</title>
</head>
<body>
        <a href=“http://lovemoe.moe.hm/prime/hello2.jsp:8080”>tomcat’s pages</a>
</body>
</head>
</html>

ブラウザから、http://lovemoe.moe.hm/tomcat_test1.html で接続して、リンクから、http://lovemoe.moe.hm/prime/hello2.jsp:8080 にとぶことができます。
URLの指定で、ApacheのhtmlページもtomcatのJSPページも見ることができます。

しかし、わざわざポート指定なんて考えるのめんどくさい。そこで、Apacheのmod_proxyモジュールの出番です。


■mod_proxyをつかったApacheとtomcatの接続
クライアントがポートの指定をすることなく、tomcatのJSPページにアクセスできるようにします。
WebサーバのApacheのhttpd.confを書き換えればOKです。

/etc/httpd/conf/httpd.conf
LoadModule proxy_module modules/mod_proxy.so                    
LoadModule proxy_http_module modules/mod_proxy_http.so

ProxyPass /prime http://lovemoe.moe.hm:8080/prime
ProxyPassReverse /prime http://lovemoe.moe.hm:8080/prime

この設定で、ポートを指定することなく、JSPページの構成ディレクトリであるprime以下のページを取得することができます。

/var/www/html/tomcat_test1.html の赤字を消して、再起動ののち試してみてください。


参考)
Tomcatハンドブック(O’REILY)

0 件のコメント:

コメントを投稿