AWSとWordPress #12

AWSとWordPress #12

SSL証明書を取得してロードバランサーに証明書をあててサイトをSSL化した結果、Wordpressのサイトが崩れ、管理画面にはログインできなくなりました。
これはなぜでしょうか?

今現在の構成を見直してみます。

システム構成

WordPressで設定しているURLは
http://wp-demo.enjoyworks.jp
です。
一方、SSL化したため、ALB(Application Load Balancer)からはhttpsでアクセスされます。
本来はWordPressの管理画面で設定→一般で
WordPressアドレス(URL)とサイトアドレス(URL)を
https://wp-demo.enjoyworks.jp
に変更すれば解決するのですが、管理画面にログインできない状況ですので、直接WordPressのDBをいじることにします。

WEBサーバ経由でDBサーバへSSHアクセスして、mysqlにログインします。mysqlまでログインしたら
MariaDB [(none)] > use wordpress;
MariaDB [wordpress] > show tables;

テーブル構造を確認します。

wordpressテーブル一覧

この中でWordpressアドレス(URL)とサイトアドレス(URL)を保持しているテーブルがwp_optionsになります。wp_optionsテーブルのカラムを確認します。

MariaDB [wordpress] > show columns from wp_options;
wp_optionsテーブルには4つのカラムがあることがわかります。

wp_optionsテーブル

option_nameの値が
WordPressアドレス(URL)はhome、
サイトアドレス(URL)はsiteurl
と決まっています。
MariaDB [wordpress] > SELECT * FROM wp_options WHERE option_name IN ('home','siteurl');

http://wp-demo.enjoyworks.jp/wordpress
となっているのを
https://wp-demo.enjoyworks.jp/wordpress
に変えます。
MariaDB [wordpress] > update wp_options set option_value = 'https://wp-demo.enjoyworks.jp/wordpress' where option_id=1;
MariaDB [wordpress] > update wp_options set option_value = 'https://wp-demo.enjoyworks.jp/wordpress' where option_id=2;

これで両URLが直ったのでサイトと管理画面にアクセスしてみます。

あれ?まだサイト崩れのままで管理画面に至ってはアクセスすらできなくなってしまいました。これはどういうことでしょう?

こちらのサイトに詳しく出ていました。
ALBとEC2の間はhttp通信になっているのです。
https://qiita.com/Uryy/items/8cb7ab69b94ebbc5c46c

wp-config.phpに以下を追記します。

if($_SERVER[‘HTTP_X_FORWARDED_PROTO’] == ‘https’) {
$_SERVER[‘HTTPS’] = ‘on’;
$_ENV[‘HTTPS’] = ‘on’;
}

ようやくサイト崩れが直り、管理画面にもアクセスできてログインもできるようになりました。

AWSでのALB+SSL+Wordpressにはちょっとしたお作法が必要ということですね。

以上で長かったAWSとWordpressのblogが終わりとなります。次回以降はサーバー監視について書いてみようかなーと思っているところです。

エンジョイワークス ではAWSのエンジニアを募集しております。我こそはまちづくりをテクノロジー使って変えていきたい!という方はご応募ください。

一覧へ戻る