ttakeのRuby練習帳

 | 

2007-01-21

railsをmod_proxyとVirtualHostで美味しく頂く

railsアプリWEBrickで動かすとき、

http://example.com:3000/じゃなくて、http://rails.example.com/アクセスしたい。

環境

claraのVPS(demi)

方法

たぶんmod_proxyじゃないかな?

やってみる

まず、mod_proxyのドキュメントをよむ。

http://httpd.apache.org/docs/2.2/ja/mod/mod_proxy.html

できればapacheの再コンパイルは避けたいので、動的にincludeしたいよ。

$ ./apachectl -l

Compiled in modules:

core.c

prefork.c

http_core.c

mod_so.c

mod_so.cを読んでるからLoadModuleできるね。

確認したらphpモジュールとかも/etc/httpd/conf.d/hogehoge.confで読んでるみたいだ。

httpd.confに書いてもいいけど、ここでは/etc/httpd/conf.d/proxy.confに書いてみる。

はじめようRubyonRailsで作ったSchedulerがあるからこれで試そう。

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_http_module modules/mod_proxy_http.so

ProxyRequests Off

<Proxy *>

Order deny,allow

Allow from all

</Proxy>

ProxyPass /schedules http://localhost:3000/schedules

ProxyPassReverse /schedules http://localhost:3000/schedules

これで、http://example.com/schedulesでスケジューラにアクセスできた。

でもこれだとcssやimageが取得できないみたい。

かといってProxyPass / http://localhost:3000/じゃ全部WEBrickにいってしまう。

もう一度、apacheドキュメントに戻ってと。

そうか、バーチャルホストでできるのか。

http://httpd.apache.org/docs/2.2/ja/vhosts/examples.html#proxy

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_http_module modules/mod_proxy_http.so

NameVirtualHost *:80

<VirtualHost *:80>

ServerName rails.example.com

ProxyRequests Off

<Proxy *>

Order deny,allow

Allow from all

</Proxy>

ProxyPass / http://localhost:3000/

ProxyPassReverse / http://localhost:3000/

</VirtualHost>

よし、これでhttp://rails.example.com/WEBrickアクセスできる。

外部からは3000番ポートアクセスできないように、

$ ruby script/server --binding=127.0.0.1

WEBrickを起動するね。

トラックバック - http://rubyist.g.hatena.ne.jp/ttake/20070121
 |