Photo by E Cashell PerlbalのX-Reproxy-Urlを使おうと思ったのですが、Reproxy先のURLへヘッダを渡す方法が無かったので、ちょっとしたハックをしました。 X-Reproxy-Headersに渡したいヘッダをカンマ区切りで入力すると、そのヘッダをReproxy先にも渡します。 下記のようなリクエストをperlbalに返すと、 X-Reproxy-Url: http://example.com/ X-Reproxy-Header: Cookie,X-Version Cookie: ID=foobar X-Version: 1.0 Reproxy先には、下記のようなヘッダが渡されます。 Cookie: ID=foobar X-Version: 1.0 Perlは4止まりだったのですが、がんばってパッチを作ってみました。 perlbal-reproxy-header-060108.patch ホントは、プラグインとかにしたいんですが、どなたか手伝ってくれませんか? 追記 RailsConfで出ていた、WarBookがPerlbalを使ってるって言ってたなぁ。
Posts Tagged: perlbal
Ubuntu / OSXにPerlbalをインストールする
Photo by stebulus nginxなども調査してみたのですが、Perlbalが一番細かくキャッシュコントロールできること、Perlで書かれているので改造がしやすいことから、これを使う方向で進めてみることにしました。 まずは、S3にreproxyする場合に、認証用のヘッダを付けるようにしないとな。 ときどき死ぬとの情報もあるのですが、これはプロセス監視と複数起動することで対処することにします。 OSXや、UbuntuにPerlbalのパッケージが無かったので、インストールする方法をまとめておきます。 パフォーマンスはまだ計測していないけど、WassrもPerlbalを使ってるんですね。
[メモ] AmazonS3とEC2を使う時にはX-REPROXY-URL
S3+EC2を使っていると、S3に保存したムービーや画像と言った大きなデータを、クライアントに返したい場合があります。 そのときにリバースプロキシを使う方法もあるけど、権限やユーザによって振り分けたい場合などは、単純なリバースプロキシではうまくいきません。 Rails側でNet::HTTPなどを使ってS3からデータを取ってくる方法もあるのですが、それだとパフォーマンスが悪すぎです。 負荷分散することを考えると、これはApacheモジュールか、リバースプロキシ側でやって欲しい作業です。自分で書こうと思ったけど、調べてみたらやっぱり同じようなのがありました。 リバースプロキシなどの中には、X-REPROXY-URLというヘッダをサポートしているものがあり、これを戻すとリバースプロキシが代わりにこのURLにアクセスしてデータを返してくれます。 Perlbalが始めにサポートしたらしいですが、lightlyやapacheもパッチが出ているようです。Perlbalはリバースプロキシとしても、性能が高いらしいので、これを評価してみようと思います。 メモリンク X-SendFile, X-REPROXY-FILE, X-REPROXY-URLを試してみる – Yet Another Hackadelic X-REPROXY-CACHE-CLEAR もあわせて使いたい人向けショート BK