nginx + glassfish
おそらく世界最速のウェブサーバー”nginx”(エンジンエックス)とGlassfish gemを組み合わせて使う方法。
nginxはロシアで開発されているオープンソースのウェブサーバー。日本では最近ようやく日の目を見始めました。
特徴としては
- 非常に軽量(使用メモリ約2M)
- 高速(Apache,lighttpdより若干速い)
- 優れたProxy 機能(HTTPだけでなく、POP/IMAPなどのproxyも可能)
Proxy機能を使って、JRuby On Railsのアプリケーションの処理のみをGlassfishに
リダイレクトする方法を紹介します。
(後日、nginxの詳細やインストール方法、thinとの組み合わせなどを書く予定)
nginxの設定ファイル、nginx.confを以下のように設定します。
nginxはport80でリッスンするものとします。
upstream glassfish {
server 127.0.0.1:3000; #proxyされる先のGlassfishのアドレス
}
server {
listen 80;
server_name <サーバー名>;
access_log <logディレクトリ>/access.log;
error_log <error ディレクトリ>/error.log;
root <Railsアプリケーションルートディレクトリ>/public;
index index.html;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect false;
if (-f $request_filename/index.html) {
rewrite (.*) $1/index.html break;
}
if (-f $request_filename.html) {
rewrite (.*) $1.html break;
}
if (!-f $request_filename) {
proxy_pass http://glassfish;
#上記に、upstreamで設定したproxy先を設定
break;
}
}nginx -t
そして、エラーがなければ
glassfish_rails <アプリケーションディレクトリ>
でglassfishを起動後、
nginx
でnginxを起動。そして
http://<ホスト名>
でアクセスすると、リクエストがGlassfishにリダイレクトされ、Railsアプリケーションが起動します。
Glassfishはフットプリントが大きいので、nginxのようなスモールフットプリントのウェブサーバーと組み合わせれば、限られたリソースのマシンでもうまく動作するでしょう。
2008/02/22 by Tomo Nozawa
« Fastladder on JRuby... | メイン | nginx: install »