Apacheの設定ファイルを久々にいじったので備忘として。
やりたいこと
- AWS Lightsail でWordPressをインストールしたインスタンスを立てる
- インスタンスの手前にロードバランサー (Lightsail) を立て、ターゲットをインスタンスに向ける
- HTTPアクセスが発生した場合はHTTPSにリダイレクトさせる
やりたかったこと・やったこと
ALBであればHTTPSのリスナーのみを作成するだけで事足りる(そもそもHTTPを空けない)のですが、Lightsail で立てたロードバランサーではデフォルトでHTTPも空いてしまうようでした。
あるいは、HTTPをHTTPSにリダイレクトするという設定のみでできますが、そこまで細かい設定はできないようです。
以下はCLBの例ですが、ロードバランサーで設定ができないようであればWebサーバーで設定する必要があります。
ELB を使用して HTTP トラフィックを HTTPS にリダイレクトする
私は Classic Load Balancer で HTTP と HTTPS リスナーを使用しています。Classic Load Balancer は SSL をオフロードし、バックエンド接続は単一の HTTP ポート (ポート 80) ...
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ヘッダはロードバランサーへアクセスされたプロトコルが入ってくるみたいです。
Elastic Load Balancing