やっつけ不定記

好きなときに好きなことをちゃっちゃと書いてます

nginxからJBOSSにつないでみた

2月15日2月20日とnginxについて触れましたが、目的はこれでした。
WebサーバとJBOSSの連携といえば、たいていはmod_jkないしmod_clusterを使って、
Apacheから連携させます。
そんな中、nginxが盛り上がって来たときに、ふと
「そもそもJBOSSへの連携ってできるのかな」
思い浮かんだのがきっかけです。


# 誰得ネタな気がしないでもないですが・・・。


せっかく試してみたのでメモを書いてみます(たぶん、もっといいやり方はあると思います)。
今回、参考にしたのは
http://rockyj.in/?p=193
とか
http://serverfault.com/questions/293348/configure-nginx-for-jboss-tomcat
nginxの文法周りについて、
http://news.mynavi.jp/news/2010/03/09/013/index.html
を使わせていただきました。


【前提】
LinuxRHEL5
JBOSSは5(たぶん、最新バージョンでもいけると思います)
JBOSSは待ち受けIPアドレスが設定されてて、
http://(JBOSSサーバ名もしくはIPアドレス):8080/(アプリのパス)
への直接アクセスで動くこと。
・hostsファイルやDNSJBOSSのサーバ名が解決できること。
JBOSSとnginxは同居している。
・nginxはソースコンパイルで導入。インストール先は/usr/local/nginx


【やってみたこと】
(1)nginxの設定ファイルを変更して再起動。
# cd /usr/local/nginx/conf
# vi nginx.conf
<変更箇所>

                                                                                  • -

server {
listen 80;
server_name localhost
(省略)
location / {
root html;
index index.html index.htm;
}

                                                                                  • -

                                                                                  • -

server {
listen 80;
server_name (nginxサーバ名もしくはIPアドレス)
(省略)
location / {
root html;
index index.html index.htm;
proxy_pass http://(JBOSSサーバ名もしくはIPアドレス):8080;
}

                                                                                  • -



(2)nginxを再起動して
http://(nginxサーバ名もしくはIPアドレス)/(アプリのパス)
にアクセスしたら、JBOSSにデプロイしているアプリが見えました。


パスの書き方を詰めれば、もっと細かい制御もできるかもしれません。
ちなみに、参考サイトではproxy_set_headerがいくつか書かれていましたが、
やってみた限りでは proxy_pass だけでいけるようでした。