https://support.cloud.engineyard.com/entries/21715452-use-elastic-load-balancing-with-engine-yard-cloudで Engine Yard のドキュメントに従いました
このセットアップを取得し、うまく機能しているように見えたので、サーバーではなく ELB で SSL Terminated を使用できるようになりました。理論的には、これにより、単一の環境で複数の SSL 証明書を使用できるようになります。
このセットアップは、ブラウザーと ELB ロード バランサー間のトラフィックは SSL ですが、ELB からアプリケーション サーバーへのトラフィックは暗号化解除されることを意味します。これにより、SSL を強制する Rails 3.2.8 アプリケーションで問題が発生しました。これは、復号化されたすべてのリクエストを同等の https にリダイレクトし、復号化されたリクエストをロード バランサーからアプリケーション サーバーに再度送信し、無限ループ状態を引き起こします。
アプリで SSL の強制を無効にする場合、各リクエストをテストして、それが SSL 接続からのものかどうかを確認する必要があります。SSL 接続からのものであれば応答でき、そうでなければリダイレクトできます。
このリリース ノート ( http://aws.amazon.com/releasenotes/7778622769836370 ) によると、トラフィックが https 接続から渡されるときに、ELB は「https」を含む X-Forwarded-Proto ヘッダーを渡します。
まず、Engine Yard のリクエストには「X-Forwarded-Proto」というヘッダーがありません。「HTTP_X-FORWARDED_PROTO」は存在しますが、トラフィックが SSL 経由で ELB に送信される場合でも、常に「http」が含まれます。
誰かがこれについての洞察や回避策のアイデアを提供できますか? これまでのところ、あまり運がなくてもEYサポートを試しました。