読者です 読者をやめる 読者になる 読者になる

httpsからmongrelにReverseProxyする

Apache2 Rails Debian

apache2をフロントエンドにして、mongrelをバックエンドにする場合、
通常の場合はいいのですが、httpsをフロントエンドにして、
バックエンドがhttpの場合は相対パスはいいのですが、
redirectなどをすると、httpsのはずの部分がhttpに書き換わってしまい、
リダイレクトに失敗します。
この場合、apache2側でRequestHeaderにX_FORWARDED_PROTOにhttps
セットする必要があります。

ProxyRequests Off
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
RequestHeader set X_FORWARDED_PROTO 'https'

こんな感じでReverseProxyの下あたりに書くといいでしょう。
mod_headersモジュールが必要なので、組み込んでおきます。

a2enmod headers

これでActionControllerのrequest.rbが
よきに計らってhttpsをつけてくれます。