AWS の ALBでHTTPS化してEC2ではHTTPでWordPressを動かすときの設定

AWS KUSANAGI

AWSにKUSANAGIパッケージがあるのでそれをインストールします。
https://kusanagi.tokyo/cloud/kusanagi-for-aws/

KUSANAGIをHTTPで動かす(HTTPSにしない)

KUSANAGIのインストールで、

kusanagi init

したときに問い合わせでメールアドレスを、、、と聞かれたときに、メールアドレスを入力するとLet’s EncryptでSSLが勝手に導入されてしまうので、メールアドレスを入力しないでEnterを2回入れればSSL設定を回避し、HTTPで起動できるようになります。

ALB(Application Load Balancer)でHTTPS化

AWSでロードバランサを設定してそこに証明書を発行します。ロードバランサを使う場合は、証明書の費用はかかりません。
HTTPSをリッスンしてHTTPで動作しているEC2インスタンスに転送する感じで設定です。
HTTPも通しておかないとデフォルトでWordpressがhttpアクセスを強制しますので。忘れずに。

(暇があったらもっと詳しく書きます)

WordPressのリダイレクトループ

はい、これでOKとおもいきや、
管理画面に入って、wordpressの設定で、httpをhttpsにすると
リダイレクトループが発生して開けません。

.htaccessが邪魔してるので、通してあげます。

2行追加

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

これで通常ページは見えるようになりますが、こんどは管理画面にも入れない。。。
HTTPSにしてるのにサーバーそのものはHTTPで動作してるので、HTTPSにリダイレクトしようとしてくれてますので、PHP設定で、嘘をついてあげます。$_SERVERや$_ENVでHTTPS通信してるよって。これをwordpressが参照してリダイレクトしようとするみたいなので。
これで管理画面にも入れるようになってよかったよかった。

wp-config.php
$_SERVER[‘HTTPS’] = ‘on’;
$_ENV[‘HTTPS’] = ‘on’;

ついでに、WordpressをFTP情報入れなくても直接アップデートやプラグインのインストールできるようになる設定をメモ

wp-config.php
define(‘FS_METHOD’, ‘direct’);

define(‘FS_METHOD’, ‘ftpsockets’);

define(‘FTP_HOST’, ‘localhost’);

define(‘FTP_USER’, ‘kusanagi’);

以上