3

Webサーバーとしてapache2を使用して正しくインストールされたWebサイトファイルを持つec2インスタンスがあります。 ec2は、ポート80でHTTPトラフィックを受信するように設定されています(100%ではなく、ほぼ確実です)。 elbには、httpsリスナー(ポート443)とhttpリスナー(ポート80)があります。 elbは、aws docsに従ってデータを解読した後、ec2インスタンスにトラフィックを送信します。私の問題は、すべてのトラフィックをhttpsのhttpであるロードバランサにリダイレクトする方法を見つけることができないことです。Apache2がhttpsにリダイレクトされない

サイトの仮想ホストとapache2.confの両方でこの書き換えルールを使用しようとしましたが、何の影響もありません(エラーもありません)。

RewriteEngine On 
RewriteCond %{HTTP:X-Forwarded-Proto} !https 
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} 

全体の仮想ホストが(/etc/apache2/sites-available/SewaneeEats.confにあります)次のようになります。

ServerName classicloadbalancer-1929710381.us-east-1.elb.amazonaws.com 
ServerAdmin [email protected] 
DocumentRoot /var/www/html/SewaneeEats/public 

<Directory /var/www/html/SewaneeEats> 
    RewriteEngine On 
    RewriteCond %{HTTP:X-Forwarded-Proto} !https 
    RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} 
    AllowOverride All 
</Directory> 

ErrorLog ${APACHE_LOG_DIR}/error.log 
CustomLog ${APACHE_LOG_DIR}/access.log combined 

私も確認することができますそのモジュールの書き換えが有効になります。

私はurl sewaneeeats.comを入力すると(これらのリンクはチェックアウトする必要がある場合はライブになります)、リダイレクトするのではなく、sewaneeeats.com(sslはありません)のままです。私はSSLがhttps://www.sewaneeeats.comに取り組んでいることを知っています。 https://sewaneeeats.comで、私はクロムのURLバーに壊れたssl赤いシンボルを取得します。私はhttps://sewaneeeats.com URLに壊れている理由は、証明書がwwwサブドメインに登録されているためだと思うが、わからない。ドメインはawsのルート53コンソールを使用して設定されているので、役立つ場合はその情報を提供することができます。

私は約12時間ほどこれを把握しようとしているので、助けがあれば本当に感謝しています。 serverfault.comにこれを載せていただろうが、私が10人の担当者の下にいるときに私は質問のために2つのリンクしかないのでできなかった。

+0

あなたの設定では、sewaneeeats.comからwww.sewaneeeats.comへのリダイレクトはどこですか? SSL証明書については、Amazonが発行した証明書を使用していることがわかります。証明書に追加ドメイン名を追加することができます。sewaneeeats.comとwww.sewaneeeats.comの両方を追加してください(新しい証明書を作成する必要があります) – at0mzk

+0

@ at0mzk書き換えルールはサイトの仮想ホスト設定ファイルにあります。これは/etc/apache2/sites-available/SewaneeEats.confファイルです。私は証明書にドメインを追加しようとします – Daniel

+1

@ at0mzkすべてのサブドメインと裸のドメインを追加した新しい証明書を作成しました。このヒントをありがとう! – Daniel

答えて

-1

は、私は通常、httpsにすべてのトラフィックをリダイレクトするために、次のルールを使用する:あなたはバーチャルホストに対してグローバルにルールを適用する場合は

RewriteCond %{HTTPS} =off 
RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [R,L] 

また、必要はディレクティブの間に書き換えルールを置かないように。

+0

ありがとうございましたが、これはうまくいかなかったのです。私は弾性ロードバランサを使用しているので、ロードバランサは、HTTP経由でリクエストを受け取るときにx-forwarded-protoヘッダーを設定することになっています。その後、apache2 confで、私は上記の設定を使ってリクエストを書き換えることができるはずですが、それは何の効果もありません – Daniel

関連する問題