ロードバランサーの後ろにAmazon Lightsailを配置して常時SSL対応する

Apacheの設定ファイルを久々にいじったので備忘として。

やりたいこと

  1. AWS Lightsail でWordPressをインストールしたインスタンスを立てる
  2. インスタンスの手前にロードバランサー (Lightsail) を立て、ターゲットをインスタンスに向ける
  3. HTTPアクセスが発生した場合はHTTPSにリダイレクトさせる

やりたかったこと・やったこと

ALBであればHTTPSのリスナーのみを作成するだけで事足りる(そもそもHTTPを空けない)のですが、Lightsail で立てたロードバランサーではデフォルトでHTTPも空いてしまうようでした。

あるいは、HTTPをHTTPSにリダイレクトするという設定のみでできますが、そこまで細かい設定はできないようです。

以下はCLBの例ですが、ロードバランサーで設定ができないようであればWebサーバーで設定する必要があります。

Elastic Load Balancing を使用して HTTP トラフィックを HTTPS にリダイレクトする
Elastic Load Balancing (ELB) Classic Load Balancer で HTTP リスナーと HTTPS リスナーを使用しています。Classic Load Balancer は SSL をオフロードし、バ...

Lightsailであれば /opt/bitnami/apache/conf/vhosts あたりに設定ファイルがあるので、VirtualHostセクションの中に以下の記述をすればOKです。

RewriteEngine on
RewriteCond %{HTTP:X-Forwarded-Proto} !=https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

ちなみにここで言っている X-Forwarded-Protoヘッダはロードバランサーへアクセスされたプロトコルが入ってくるみたいです。

HTTP ヘッダーと Application Load Balancer - ELB
ELB の X 転送リクエストヘッダーについて説明します。
タイトルとURLをコピーしました