Hatena::ブログ(Diary)

C_memo(5) このページをアンテナに追加 RSSフィード

2009/January/22

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

| 21:09 | フロントエンドからバックエンドへの環境変数受け渡しを含むブックマーク

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%>

だが、ApacheSSOの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