ハマログ

株式会社イーツー・インフォの社員ブログ

AWSが原因で.htaccessが利用できない対処

前回に続けてAWS関連の記事にしようと思いました。AWSでEC2にELB(ALB)を配置するのはよくある構成だと思います。
ELBをかましておくだけで、SSL証明書の設置・更新も楽ですし、Certificate Managerで証明書を管理できて便利ですよね。

EC2一台でもELB使うメリット他にもあります。詳しくは下記参照
https://dev.classmethod.jp/cloud/aws/benefit_elb_with_one_ec2/

WEBサービスを部分的に利用していたhttpsを常時httpsにする要件がありました。
サイト内リンクを全て「https」でアクセスできるようにすればよいのですが、
別途URLを手動で「http」にして叩くと、従来通りhttpでアクセスできてしまう。

今回、それを回避するために.htaccessを利用しリダイレクトしました。

単に.htaccessを変更するだけではローカル環境では成功してもデプロイ後、うまく反映しない・・
最初はapacheのmod_rewriteが有効になっているのかなど、確認を行いましたが、それでも動かない・・

【調査後】
AWSの構成でALBが443ポートで待機し、EC2に80でアクセスしてしまうため、リダイレクトループが起きてしまう

ということが判明しました。

【対策】
X-Forwarded-Protoを使用し、ALBにアクセスされた時点のプロトコルを取得し判定を行う。

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !=https #ALBにアクセスされた時点のプロトコルがHTTPS以外なら
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] #HTTPSでリダイレクトさせる。

助けてくれたメンバーの方、ありがとうね!!

  sm   2019年9月13日


関連記事

AWSのインスタンスストアボリューム(エフェメラルストレージ)

はじめに AWSでEC2インスタンスを停止する時に表示されるこれ。 いつも雰囲気…

Amazon Linux 2のPHP5サポート

現時点で、PHP5系のサポートはすべて終了しています。 PHP5系のセキュリティ…

GSuiteのアカウントでAWSマネジメントコンソールにログインする(SAML)

はじめに イーツー・インフォでは、AWSの複数アカウントを運用しています。そうい…


← 前の投稿

次の投稿 →