WordPessのサイトヘルス画面で『致命的なエラー』が2件発生していたので確認したら、以下のエラーが発生していました。
エラー: cURL error 7: Failed to connect to <DOMEIN> port 443: Connection refused (http_request_failed)
私の環境は、組織のDNS → 下部組織のDNS → Nginxリバースプロキシ → WordPress(Dockerコンテナ)という構成だったため、どこで443エラーが発生しているのかわからず、1週間以上原因究明をしていました。
結論として、Dockerコンテナ内の /etc/hosts に『ドメイン名→リバースプロキシIPアドレス』を追記したら解決しました。
原因として、おそらく以下のことが発生していました。
- WordPress内から(自分サイトの)ドメイン名でcURLをした際に、一度WANを出て戻ってくる。
- 外のネットワークから来たパケットだけど、ネットワークインタフェースは内側ネットのものだから、ルーターがGUIの管理者画面に飛ばしてしまう。
- ルーターの管理者画面は基本的に80ポートを受け付けて443ポートは拒否する。
- この拒否が、上記のエラー内容
という感じでした。運悪く私の組織で使用しているルーターでは、GUI管理者画面のポートを変更することができなかったため、ポートフォワードの解決は難しかったです。そのため、WordPressサービスが動くホストの /etc/hosts でサービスドメインをリバースプロキシに飛ばすことで、そもそも外に出ない構成に変更しました。
(これが正解かわかりません)
/etc/hosts #wordpress 192.168.xxx.xxx www.<domein>.com ↑これはリバースプロキシのプライベートIP
こんな感じ
これでなんとかループバック処理は解決しました。