カテゴリー
AWS

Azure Front Doorを使ってApp Serviceのアプリを公開する

Azure Front Doorを使ってSSL/TLS通信をさせる

Front Door経由で配信したいドメイン(FQDN)に対してCNAMEを設定し、ドメインの所有権を確認させられば、Azureが提供する無償のSSL証明書を使うことができる。

最近は一般サイトも常にSSL通信させることが普通になってきているので、HTTPでのリクエストもHTTPSにリダイレクトさせる設定をFront Doorに設定する。

Front Doorデザイナーでの設定例

① HTTPで受信したら、HTTPSにリダイレクトする

② HTTPSで受信しても、App Serviceのホスト名でアクセスされていたら、公開用のドメイン名に変えてリダイレクトする

③ HTTPSで公開用のドメイン名でアクセスされたら、バックエンドのApp Serviceにリクエストを転送(Forward)して結果を返す

リダイレクトがうまくいっているかの確認方法

  1. ブラウザでアクセスしてみる
  2. ChromeやFirefoxなどのブラウザ内蔵のデベロップメントツールでHTTPリクエストがHTTPSにリダイレクトされていることを見る
  3. curl -v http://…とコマンド実行して、Locationヘッダでリダイレクトされていることを確認する
カテゴリー
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’;
}