WordPressのサイトヘルスでREST APIとループバックのエラーが発生した話

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アドレス』を追記したら解決しました。

原因として、おそらく以下のことが発生していました。

  1. WordPress内から(自分サイトの)ドメイン名でcURLをした際に、一度WANを出て戻ってくる。
  2. 外のネットワークから来たパケットだけど、ネットワークインタフェースは内側ネットのものだから、ルーターがGUIの管理者画面に飛ばしてしまう。
  3. ルーターの管理者画面は基本的に80ポートを受け付けて443ポートは拒否する。
  4. この拒否が、上記のエラー内容

という感じでした。運悪く私の組織で使用しているルーターでは、GUI管理者画面のポートを変更することができなかったため、ポートフォワードの解決は難しかったです。そのため、WordPressサービスが動くホストの /etc/hosts でサービスドメインをリバースプロキシに飛ばすことで、そもそも外に出ない構成に変更しました。

(これが正解かわかりません)

/etc/hosts
#wordpress
192.168.xxx.xxx    www.<domein>.com
↑これはリバースプロキシのプライベートIP

こんな感じ

これでなんとかループバック処理は解決しました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です