カテゴリー
AWS

AWS ALB配下にWordPressを入れたら繋がらない

前にAzure Front Door経由でWordpressを公開したときも同じハマり方をしたような気がするけども……。

原因は、リバースプロキシ配下だとHTTPS経由で通信しているかどうか判別できないためにリダイレクトし続けてしまうため。

対処法は、https://wordpress.org/support/article/administration-over-ssl/#using-a-reverse-proxy にもあるが $_SERVER[‘HTTP_X_FORWARDED_PROTO’] をみてリバースプロキシ配下にいるかどうかを判別してやるコードを wp-config.php に書き加えてやること。
※ 下記のコード例は、参考URLにあったものを少し手直ししている。

if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false) {
  $_SERVER['HTTPS']='on';
  $_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_HOST'];
  $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
カテゴリー
AWS

Azure App ServiceとAzure Database for MySQLでWordPressを立ち上げる

Azure Database for MySQLを作成する

インスタンスの作成は、https://docs.microsoft.com/ja-jp/azure/mysql/quickstart-create-mysql-server-database-using-azure-portal に記載されているとおり。

DBが起動後、Wordpress用にDBユーザを分ける場合は以下のようにして分けておく。

CREATE USER wordpress IDENTIFIED BY ‘password’;
CREATE DATABASE wordpressdb;
GRANT ALL PRIVILEGES ON wordpressdb.* TO wordpress;
FLUSH PRIVILEGES;

Azure App ServiceでPHP 7.3を起動する

サービスの作成とランタイムの選択はウィザードに従うとできると思うので割愛。

作成後、https://wordpress.org/download/ からZIPファイルをダウンロードして、FTPS経由でwwwroot配下にファイルをアップロードする。

Azure Database for MySQLに接続するための設定

Azure Database for MySQLはデフォルトでSSLがオンになっているため、wp-config.phpに以下の設定をしておく。

define(‘MYSQL_CLIENT_FLAGS’, MYSQLI_CLIENT_SSL);

Azure Front Door配下に入れるための設定

また、Azure Front DoorなどのCDNやリバースプロキシ配下にするとWordpressの実ホスト名と異なることから、特にSSLをオンにするとリダイレクトループが発生してしまうので、リバプロが付与するX-Forwarded-Forヘッダを読み取るようにwp-config.phpに以下のコードも入れておく。

$_SERVER[‘HTTP_HOST’] = $_SERVER[‘HTTP_X_FORWARDED_HOST’];
$_SERVER[‘REMOTE_ADDR’] = $_SERVER[‘HTTP_X_FORWARDED_FOR’];

define(‘FORCE_SSL_ADMIN’, true);

if (isset($_SERVER[‘HTTP_X_FORWARDED_PROTO’])
&& $_SERVER[‘HTTP_X_FORWARDED_PROTO’] === “https”) {
$_SERVER[‘HTTPS’] = ‘on’;
}