SSLアクセラレータ経由でNginx+Passenger+Rails3.2のアプリを常にhttpsアクセスで使用する方法

| コメント(0) | トラックバック(0)

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;

こう設定することによって、やっと思い通りの動きをしてくれました。ヽ(´ー`)ノ

ハマった〜(>ω<)



トラックバック(0)

トラックバックURL: http://www.iwazer.com/mt/mt-tb.cgi/971

コメントする

このブログ記事について

このページは、iwazerが2012年7月12日 19:05に書いたブログ記事です。

ひとつ前のブログ記事は「複数のgitリポジトリを使う(2) 」です。

次のブログ記事は「ANGRAベスト・アルバムを選曲しよう!」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。