フロントエンドからバックエンドへの環境変数受け渡し

Apache:443 + mod_proxy + mod_proxy_balancer + mongrel_cluster + Mongrel:8000
で、Apache環境変数Mongrelで取得したい。


まず、Mongrelでは、下記で環境変数を取得する。

<% ENV.each do |key,val|%><%= key%>,<%= val%><%end%>
そして、下記でhttpヘッダー変数を取得する。CGI環境変数もこれに含まれる。
<% request.env.each do |key,val| %><%= key%>,<%= val%><% end%>
だが、ApacheのSSOのID情報(例えばの話)を、Apache環境変数としてもっていて、
Mongrelがその環境変数を使用したい場合は、この方法では無理。


そこで、mod_headersを使い、httpd.confに下記を記載する。
RequestHeader set HOGE_ID "%{Apache上の環境変数}e"
を末尾に追加することで、
HTTP_HOGE_IDというヘッダー変数がMongrelに渡るので、これを取得すればOK。
ただし、Apache2.0以上でないとmod_headersは対応していないらしい。


決め手になった参考URL
http://rubyist.g.hatena.ne.jp/bongole/20060605/1149505937
先人の知恵に感謝。
他の参考URL
http://www.flatz.jp/archives/166