Apache で X-Reproxy-URL ヘッダを使えるようにするモジュール mod_reproxy を書いた
ウェブアプリケーションにおいて、認証がかかっている画像や大きなファイルを配信する場合には、Perlbal 等でサポートされている X-Reproxy-URL ヘッダが有効なことが知られていて、その理由としては、
- (メモリを大食いする) アプリケーションサーバのプロセスを転送終了まで占有しない
- HTTP ベースの分散ファイルシステムとリバースプロキシが直接交信するので、ネットワーク負荷が低い
といった点が挙げられます。「でも、Apache は X-Reproxy-URL ヘッダをサポートしてないんだよねー」という話が、先日の YAPC::Asia 2009 においても話題になっていました[要出典]。回避策としては、ワンタイムURLのような手法もあるのですが、セキュリティな懸念もあります。
なんとかしたいなと思っていたのですが、気が向いたので、Apache に X-Reproxy-URL ヘッダ対応機能を追加するモジュール mod_reproxy を書いてみました。Github に置いてあります。
使い方は簡単。ダウンロードして、apxs を使って、コンパイル&インストールを行います。
# apxs -i -a -c -Wc,-Wall -Wc,-g -Wc,-O2 -lcurl mod_reproxy.c
その後、Apache の設定ファイルに
Reproxy On
と追記すれば、その追記した範囲において、X-Reproxy-URL ヘッダによる内部リダイレクトが有効になります。
それだけです。特に説明することもないのですが、状況によっては便利に使えるかと思います。
参考: lighttpd の X-Sendfile を使えるApacheモジュール - spiritlooseのはてなダイアリー
Comments