Rails3.2のWebアプリケーションをhttpsアクセスで使用する場合、通常SSLアクセラレータまでをSSL通信し、そこから内部の通信はhttpで行うことが多い思います。
こういう経路です。
INTERNET ↓ https SSL ACCELERATOR ↓ http Nginx ↓ Passenger module Rails App
RailsはHTTPで動いているため何もしないとredirect_toでリダイレクトした場合httpプロトコルでリダイレクトされてしまいHTTPSのみ許可している場合アクセス不能になります(-ω-)
RailsはX-Forwarded-ProtoというHeaderにhttpsがわたってくればSSLモードで動いてくれてhttpsのリダイレクトがされるのですがNginxでそれを設定する方法を検索してみると
proxy_set_header X-Forwarded-Proto https;
こればかり引っかかり、設定してみても一向に効かない...
良く考えてみるとPassengerはProxyでなくCGIじゃまいか!
ここで本家ドキュメントをよく読んでみると
Phusion Passenger users guide, Nginx version (5.5.3. passengersetcgi_param <CGI environment name> <value>) でHeaderを設定することができそうです。
ドキュメントをよく読んで
passenger_set_cgi_param HTTP_X_FORWARDED_PROTO https;
こう設定することによって、やっと思い通りの動きをしてくれました。ヽ(´ー`)ノ
ハマった〜(>ω<)