2017年7月4日火曜日

AWS ELBでHTTP→HTTPSリダイレクトができない件

Amazon Linux / Apache で

かなり試行錯誤しましたが、以下の記事を参考にしてなんとかできました。

AWS Elastic Load Balancer と Apache を使って HTTPS(SSL) 通信を行うための設定方法 - komiyakの通り道
http://d.hatena.ne.jp/komiyak/20130807/1375845025


多くのサイトでは .htaccess内に以下のように記述しろと書いてあるのですが、なぜかダメ...

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} ^http$
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]


上記サイトを参考に
RewriteCond %{HTTP_USER_AGENT} !^ELB-HealthChecker
を入れてみましたが、

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} ^http$  #←ここがどうも認識されていない?...
RewriteCond %{HTTP_USER_AGENT} !^ELB-HealthChecker  #←これも必要
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

これもだめ。

以下のようにPortで判定するようにしたら、できました。

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Port} ^80$  #←Portで判定
RewriteCond %{HTTP_USER_AGENT} !^ELB-HealthChecker  #←これも必要
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]


少々釈然としませんが、時間のあるときにまた調べてみます。

※なぜリダイレクトがエラーになるかは以下が参考になりました。異なる対処方法も書いてあります。
AWS環境でELB(ロードバランサー)とEC2サーバでapacheを使っている場合にhttpからhttpsにリダイレクトする方法 – joppot
https://joppot.info/2014/05/01/1286

0 件のコメント:

コメントを投稿