Home > Tags > Apache
Apache
Apache(mod_rails)とmongrelでHTTPレスポンスヘッダに特定の値を返す
- 2008-04-15 (Tue)
- Ruby on Rails
Photo by icanteachyouhowtodoit
レスポンスコードでステータスを判断するとFreeSpotとかで問題にならない?からの続き。
ステータスコードで200が帰ってきたときに、ほんとに自分が通信したいサーバから帰ってきたかを検証する方法を考えてみました。
ほんとに相手のサーバを認証したい場合はSSLを使うべきですが、そんなに大事にしたくない場合は、HTTPレスポンスヘッダに特定の値をセットすることで、相手を特定できるのではないかと思います。
Railsのbefore_filterなどでresponse.headersをセットしてもいいのですが、これだとcacheに入った場合など、Railsを通らないときには、ヘッダが追加されません。
そのため、mod_railsの場合はApacheで、mongrelの場合はmogrel内でヘッダにセットする必要があります。
Apacheでは、Headerディレクティブでヘッダを書き換える事ができます。これを使う場合にはmod_headersを有効にしてください。
<VirtualHost *> .... Header set X-AppName sticka </VirtualHost>
mongrelの場合には、config/environment.rbに下記のコードを追加します。
if defined?(Mongrel) && defined?(Mongrel::Rails)
class Mongrel::Rails::RailsHandler
alias process_without_appname process
def process(request, response)
response.header['X-AppName'] = 'sticka'
process_without_appname(request, response)
end
end
end
これで、開発で使っているmongrelでも、実環境のApacheでもHTTPレスポンスヘッダのX-AppNameにはstickaが設定されます。
外部からAPIをアクセスする際には、X-AppNameを検証することで、プロキシなどによって勝手にリダイレクトなどをされても、それを検出することができます。
- Comments: 0
- Trackbacks: 0
mod_rails用のdeploy.rbとapache用設定ファイルジェネレータ
- 2008-04-12 (Sat)
- Ruby on Rails
Railsで一番めんどくさかったアプリの公開を、Apache httpdが動いているサーバに、普通にアップロードするだけで行える様にするモジュール、mod_railsがリリースされました。
いままで似たようなものにmod_rubyがあったのですが、ずっとメンテナンスされていない上に、構造的にRailsには向かないようになっていたので、Phusion社が新しく作ったものです。
日本語での紹介はmoongiftさんの記事をご覧ください。インストール方法や使い方は、こちらの記事を参考にしてください。
このモジュールの評価が高まれば、レンタルサーバでもRailsサポートをしてくれる所が増えるんじゃないかと期待してます。
早速、自分のサーバ(EC2)に入れてみた所、特に問題もなくあっさり動きました。
ただ、Capistranoを使っている場合、mongrelの時のままだと、サーバの起動などで失敗するので、config/deloy.rbをこのようにしました。
同時に、「設定より規約」でWebサーバ設定の自動化をするために、apache2-conf.rbも更新しました。
私は、/etc/init.d/apacheの頭の方で、/mnt/www/bin/apache2-conf.rb > /etc/apache2/conf.d/vhosts.conf
を実行させて、apacheのプロセスを操作するたびに、自動生成される様にしています。
これで、ディレクトリ掘って、DB作って、cap deploy:setup; cap deploy:coldするだけで、新しいサーバでRailsのアプリを動かす事ができます。
ずっと作り続けている、Railsサーバの分散環境 on EC2も、これを使おうかと思っているので、ちょっとソースも読んでみます。
p.s
記事内で使っているderivativable.comは、いま作っている途中のcode snippetsサイトです。
投稿されたコードにたいてい、派生物を簡単に作れる様にするのが目標です。
Wikiでも、投稿されたコードを変更できますが、元のコードが消えてしまうので、心理的敷居が非常に高いと思っています。
それに対して、derivativable.comでは、元のコードは消える事なく、その派生物として管理される様になっています。元のコードは、そのまま保存されますので、自分用の変更などを気軽に投稿する事ができます。
まだベータ版にも満たないサービスですが、このコードに自分で機能を加えたときなどは、ぜひ投稿してもらえるとうれしいです。
あと私はデザインができないので、その辺で手伝ってくれる方も大募集。
- Comments: 0
- Trackbacks: 1
Home > Tags > Apache
- Search
- Feeds
- Meta