web-dev-qa-db-ja.com

SSL終了ロードバランサーの背後にあるEC2インスタンスでのSSLリダイレクト

WebアプリケーションですべてのURLをhttpsにリダイレクトしようとしています。

エラスティックロードバランサーの背後にec2インスタンスがあります。 SSLはロードバランサーで終了します。

リダイレクトを試みると、おなじみの「このページは決して完了しない方法で要求している」という結果になります。

ロードバランサは、443と80をインスタンスのポート80に転送します。

これは私の.htaccessにあるものです。

RewriteCond %{X-FORWARDED-PROTO} !=on  
RewriteRule ^ https://%{HTTP_Host}%{REQUEST_URI} [L,R=301]

誰かがこれを達成する方法を知っていますか?誠にありがとうございます。

11
rix

未テストですが、私はこれを試します

RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

http://docs.aws.Amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/TerminologyandKeyConcepts.html#x-forwarded-proto

17
Mike

Mike の答えはほぼ正しいですが、ロードバランサーがec2インスタンスがまだ正常に動作していることを確認するには、ヘルスチェックルーチンを実行する必要があることを指摘することが重要です。これは追加のRewriteCondで実行できます

RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{REQUEST_URI} !^/alive\.html$
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

...どこ alive.htmlは、ヘルスチェックファイルの名前です。

0
Jon B