0

hereの前にクエリを作成しました。私はそれが働いていると考えましたが、実際にはまだありません。AWSのELBでHttpからHttpsへのリダイレクト

ロードバランサはインターネットに面しており、背後にはEc2インスタンスがあります。 > 80と443 - - マイロードバランサはポート80とポート443

彼らは80として配置されているに開放されている> 80

は、今私がhttpsへのHTTPアクセスをリダイレクトする必要があります。

私がしたことは です。私は.htaccessファイルを作成し、/ var/www/html /にあります。それは私のウェブサイトのindex.phpが置かれているフォルダです。

.htaccessファイル内で、インターネットで見つかったものをいくつか試しました。彼らのどれも働かなかった。

<VirtualHost *:80> 
    RewriteEngine On 
    RewriteCond %{HTTP:X-Forwarded-Proto} =http 
    RewriteCond %{HTTP_USER_AGENT} !^ELB-HealthChecker 
    RewriteRule . https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent] 
</VirtualHost> 

<VirtualHost *:80> 
    RewriteEngine on 
    RewriteCond %{HTTP_HOST} www.(.+) [OR,NC] # Added 
    RewriteCond %{HTTP:X-Forwarded-Proto} !https [NC] 
    RewriteRule ^/?(.*) https://domainname.com%{REQUEST_URI} [L,R=301] 
</VirtualHost> 

セットアップ時に機能しないのはなぜですか?

EDIT:

<If "req('X-Forwarded-Proto') != 'https'> 
    RewriteEngine On 
    RewriteCond %{HTTP_USER_AGENT} !^ELB-HealthChecker 
    RewriteRule . https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent] 
</If> 
+0

AWBからの返信を手がかりにしたのは、ELBがX-Forwarded-Protoを使用してリダイレクト情報を挿入するということだけです。したがって、リダイレクトの実際の実装は、インスタンスのApacheで行われる必要があります。私はどのように把握する必要があります。 – batuman

+0

Phabricatorについても同様の問題が解決されました。 https://stackoverflow.com/a/48149369/7098257 –

答えて

0

:だからredirect.confは、このようなものになります。

<If "req('X-Forwarded-Proto') != 'https'> 
    RewriteEngine On 
    RewriteRule . https://%{SERVER_NAME}%{REQUEST_URI} [L,R] 
</If> 

をそして、あなたはそのようなApacheの設定ディレクトリ/etc/httpd/conf.d/にこのファイルを配置するコンテナのコマンドを使用したいです長い時間と今は正常に動作させることができます。私は以下のように私がしたことを分かち合いたい。

(1)Create .htaccess file inside the folder same as root file index.php exists 
(2).htaccess file has 
RewriteEngine On 
RewriteCond %{HTTP:X-Forwarded-Proto} =http 
RewriteRule . https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent] 
(3)Then enable mod_rewrite, try the command line command: 
    sudo a2enmod rewrite 
(4)To make sure mod_rewrite is enabled, update /etc/apache2/apache2.conf file as 
<Directory /var/www/html> 
     Options Indexes FollowSymLinks 
     AllowOverride All 
     Require all granted 
</Directory> 
initially is 
<Directory /var/www/> 
     Options Indexes FollowSymLinks 
     AllowOverride None 
     Require all granted 
</Directory> 

Then you can setup http to https successfully 
You need to restart server as sudo service apache2 restart after update of /etc/apache2/apache2.conf 

ロードバランサとそのセキュリティグループは、httpアクセスを開く必要があります。

0

私は、ApacheでHTTPSのためにやっていることはcontainer commands経由でカスタムredirect.confファイルをアップロードしています。私は問題を解決されています

container_commands: 
    01_update_rewrite_rules: 
    command: "cp rewrite.conf /etc/httpd/conf.d/" 
+0

これを/ etc/httpdフォルダの中に入れ、内部にconf.dファイルがあることを意味しますか?/etc/httpdフォルダが見つかりません。同じconf.dに同じ – batuman

+0

あなたはAMIを使用していますか? '/ etc/httpd/conf.d /'はLinuxのデフォルトApache設定ディレクトリです – chukkwagon

+0

私はUbuntu 16.06 – batuman

関連する問題