2016-04-22 12 views
0

Apacheとmod_rewriteを使用してAWSロードバランサの背後でdrupalサイトをフルhttpsで実行しようとすると、 ELBはSSL証明書プロバイダとして機能しています。 ELBへのすべてのトラフィックを暗号化し、EC2インスタンスへのトラフィックは通常のHTTP(かなり標準的)です。AWSエラスティックロードバランサの背後でDrupalでhttpsを有効にする

すべての種類の.htaccessとApache conf.d/*。conf mod_rewriteの条件とルールを試しました。トラフィックをhttpsにリダイレクトすることができたとき、ELBの健全性チェックが破られ、私の「不健全な」EC2インスタンスがプールから取り除かれました。 ELBのヘルスチェックが合格するように修正しようとすると、無限のリダイレクト問題が発生します。

これをオン/オフするために1週間ほどかかり、最終的に解決策を見つけました。同じ問題がある場合は、こちらをご覧ください!それはあなたのために100%動作しないかもしれませんが、少なくとも私はそれを修正する方法についていくつかの光を当てることができるかもしれません。

+0

これは問題ではないようです。また、あなたが投稿している問題は、既にここで何度か尋ねられ、ここで何度も答えられています:http://stackoverflow.com/questions/17174626/elb-and-apache-configuration-for-https-website –

+0

私は、これは疑問ではないので、この質問を議論の対象外とする投票を行う。 –

+0

申し訳ありません - 答えを書いていました。私が試した他の方法はどれも適切に働いていなかったし、少なくとも私を助けるほど詳しくは説明されていなかった。あなたが投稿したものが、使用されたRewriteRuleのために試みられ、無限のリダイレクトにつながった。私はそれを働かせることができる唯一の方法は手動で私のドメインを入力することでした。 – tbox

答えて

1

よくある質問は、すべてのトラフィックをhttps://example.comに向けたサイトの回答です。

私は、このファイルには、次のしている:

まず第一に、/sites/default/settings.phpでのDrupalののsettings.phpファイル(あなたがhttps://www.example.comをしたい場合は、いくつかの調整を行うことができます)

$base_url = '//example.com'; 
$conf['reverse_proxy'] = TRUE; 
$conf['reverse_proxy_addresses'] = array('name-of-my-loadbalancer.us-west-2.elb.amazonaws.com'); 
$conf['reverse_proxy_header'] = 'HTTP_X_CLUSTER_CLIENT_IP'; 

実際には、上記の「reverse_proxy」設定が実際に必要かどうかはわかりません。実際には、私はそれらを無効にしており、何にも影響していないように思われます。重要な部分は、あなたのsettings.phpファイルに$base_url = '//example.com';があることを確認することです。

次の部分は.htaccessファイルを構成しています。ここで重要なビットです:

RewriteCond %{HTTP:X-Forwarded-Proto} !https 
RewriteCond %{HTTPS} off 
RewriteCond %{REQUEST_URI} !=/healthy.html 
RewriteRule^https://example\.com%{REQUEST_URI} [L,R=301] 

は、私のようなnoobのために、これが最初で把握することが大変でしたが、ここ内訳です:

  1. RewriteCond %{HTTP:X-Forwarded-Proto} !httpsこれは、送信されている プロトコルを見てロードバランサ。プロトコルが httpsでない場合は、RewriteRuleを開始します。

  2. RewriteCond %{HTTPS} offトラフィックはHTTPSではないサイトに向かっている場合は、これは重要なビットでのRewriteRuleに

  3. RewriteCond %{REQUEST_URI} !=/healthy.htmlを開始します。私は、「成功!」という単語を含むシンプルなhealthy.htmlファイルを持っています。私のメインdrupal Webrootディレクトリ内のApache。 ELBによってhealth.htmlファイルにアクセスすると、それは書き換えルールをバイパスします。そうでなければ、ELBのヘルスチェックが失敗し、サーバーがオフラインになります。

  4. RewriteRule^https://example\.com%{REQUEST_URI} [L,R=301]ここは実際の書き換えルールです。上記の条件のすべてが合格すると、着信URLがhttps://example.com/whateverに書き換えられます。ちなみに、Lは「これはこのセットの最後のルールです」のように「最後」を表し、「R = 301」は「301リダイレクト」を表します。

私は手動で(先頭にhttpsで)https://www.example.comに入力した場合、これは適切なリダイレクトを行わないだけです。私は別の簡単なRewriteCondでそれを修正できると思います。

関連する問題