二流エンジニアの逆襲

二流エンジニアが一流エンジニアになるまでの記録である

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 公式ページにも記載がある。