ステージングサーバーに自己署名証明書をインストールしました。私はそれを使用して私のSSLのセットアップをテストしています。私はログインにDevise 1.5を使用しており、this article on the devise wiki for ssl/http configに従っています。ステージングサーバーでDevise with SSLを使用している場合、どのようにリダイレクトループを修正できますか?
を、サーバ(nginxのは、Apacheなど)上でSSLを有効にしてください:
ドキュメントが言います。 サーバが正しく設定されていないと、Railsは リクエストをSSLとして認識しません(そうであっても)。これは無限のリダイレクトループを引き起こします。
[OK]を確認してください、私は強く(私はEngineYardのインスタンスです)SSL上のスイッチを反転する必要はないと思う。私はSSL証明書をサーバーにインストールしました。
私は、ファイル/etc/nginx/servers/MyAppName.ssl.conf
を確認したのだが、これらの線があります右...
ssl on;
ssl_certificate /etc/nginx/ssl/MyAppName.crt;
ssl_certificate_key /etc/nginx/ssl/MyAppName.key;
ssl_prefer_server_ciphers on;
ssl_protocols SSLv3 TLSv1;
だからそれが見えますか?私は確かにそれを混乱させたくありません。
私のRegistrationsControllerはforce_ssl :only => [:new, :create, :edit, :update]
なので、すべての認証アクションはsslを強制的に強制する必要があります。 SessionsControllerはforce_ssl :only => [:new, :create]
です。
私はここに多くの可動部品があることを認識していますが、次に見なければならないのは何ですか?
はここで、レールのログです:
Started GET "https://stackoverflow.com/users/sign_in" for 98.246.164.160 at 2012-02-29 20:47:39 +0000
[29 Feb 20:47 23166 INFO] Processing by Devise::SessionsController#new as HTML
[29 Feb 20:47 23166 DEBUG] Parameters: {"action"=>"new", "controller"=>"devise/sessions"}
[29 Feb 20:47 23166 INFO] Redirected to https://ec2-xxx-xxx-106-255.us-west-2.compute.amazonaws.com/users/sign_in
[29 Feb 20:47 23166 INFO] Completed 301 Moved Permanently in 1ms
[29 Feb 20:47 23166 INFO]
Started GET "https://stackoverflow.com/users/sign_in" for 98.246.164.160 at 2012-02-29 20:47:39 +0000
[29 Feb 20:47 23166 INFO] Processing by Devise::SessionsController#new as HTML
[29 Feb 20:47 23166 DEBUG] Parameters: {"action"=>"new", "controller"=>"devise/sessions"}
[29 Feb 20:47 23166 INFO] Redirected to http://ec2-xxx-xxx-106-255.us-west-2.compute.amazonaws.com/users/sign_in
[29 Feb 20:47 23166 INFO] Completed 302 Found in 1ms
[29 Feb 20:47 23166 INFO]
Started GET "https://stackoverflow.com/users/sign_in" for 98.246.164.160 at 2012-02-29 20:47:39 +0000
[29 Feb 20:47 23166 INFO] Processing by Devise::SessionsController#new as HTML
[29 Feb 20:47 23166 DEBUG] Parameters: {"action"=>"new", "controller"=>"devise/sessions"}
[29 Feb 20:47 23166 INFO] Redirected to https://ec2-xxx-xxx-106-255.us-west-2.compute.amazonaws.com/users/sign_in
[29 Feb 20:47 23166 INFO] Completed 301 Moved Permanently in 1ms
request.ssl == falseの場合、おそらく、乗客の代理人は、ApacheがSSLを使用していることを知らないことを意味します。 VirtualHostファイルに 'RequestHeader set X-Forwarded-Proto" https "をSSLのために置く必要があります。 – paleozogt