wordpress +HTTPSプロキシ環境に移行後に管理画面にアクセスできくなる罠
本サイトを HTTPS 化ために、新しく HTTPSプロキシ用に nginx コンテナを立ち上げ、サーバに対してHTTPSで送信してきた要求を wordpress に中継する
(*)ようにしました。その過程で、いろいろ問題が発生しましたが、最後にwordpress の管理画面にのみアクセスできない(サイトトップにはアクセス可能)現象が発生し、1日テレビ見ながらデバッグしていました。結局、以下のことが起こっていたのでした。
(*)後日手順を記載します。今日は疲れた、、、、
原因
詳細は理解していないですが、 wordpress の管理画面に リバースプロキシを使用してSSLでアクセスするとリバースプロキシ - wordpress(nginx) 間で無限 リダイレクト302 が発生するらしい。実際、以下のようにプロキシとwordpress が要求をたらいまわししているのがログに出ていた。(慣れた人が見たらすぐに分かるのだろう。。。)
proxy_1 | nginx.1 | www.polonity.com xxx.xxx.xxx.xxx - - [23/Dec/2018:15:59:14 +0000] "GET /wp-admin/ HTTP/2.0" 302 0 "-" "xxxx"
wordpress_1 | xxx.xxx.xxx.xxx - 23/Dec/2018:15:59:14 +0000 "GET /wp-admin/index.php" 302
解決策
wordpress 側で対策が必要。wordpress のwp-config.php に以下の内容を追記する。
wp-config.php
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO'])
&& $_SERVER['HTTP_X_FORWARDED_PROTO'] === "https") {
$_SERVER['HTTPS'] = 'on';
}
define('FORCE_SSL_ADMIN', true);
とりあえず、これで動作している。ちなみに、この解決策は、wordpress 公式ページにも記載がある。