WordpressでSSL対応させました。サイトアクセスの速度を上げようと、NginxでProxyキャッシュを効かせています。
サイトへのアクセスは問題なくできましたが、管理画面にアクセスすると無限リダイレクトループに陥ってしまいました。
以下、対応したことを記載しました。
#リバースプロキシを使用している場合のSSL通信
SSLによるログインと管理画面へのアクセスを強制するためには、wp-config.php に
define('FORCE_SSL_ADMIN', true);
を設定する必要があります。
ただ、リバースプロキシを使用している場合は、このオプションを設定するとすべてのリクエストが無限リダイレクトループに陥ります。これを避けるためには、
if ( ! empty( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' ) {
$_SERVER['HTTPS']='on';
}
という記述により、HTTP_X_FORWARDED_PROTO ヘッダーを認識するようにWordpressを構成する必要があります。
#nginxにproxy_set_header X-Forwarded-Proto httpsを追加設定
HTTP_X_FORWARDED_PROTO をwordpressで認識するために、proxy_set_header に以下の一行追加します。
proxy_set_header X-Forwarded-Proto https;
#wp-config.php の注意点
ここで注意したいのは、wp-config.php における記述場所です。
/* That's all, stop editing! Happy blogging. */
よりも上に記述する必要があります。この記述よりも下に記載すると、デバッグモードで
Notice: Constant FORCE_SSL_ADMIN already defined in
というエラーメッセージが表示され、
「このページにアクセスするための権限がありません。」
と、無限ループは解消されますが、管理画面へはアクセス出来ない状態が続きます。
以上の修正で管理画面へアクセスできるようになりました。
##参考にしたサイト