WordPressで制作をしていると、
「…の更新中に問題が発生しました。サーバーが稼働しているサイトに接続できない可能性があります。」
「cURL error 28: Connection timed out after 10000 milliseconds」
などなどの問題が起こったり、エラーをよく見かけてたんだわな。サイトヘルスではREST APIにエラーが出ているのが常という状態。
これってあるときから気がついていたのだけれど、レンタルサーバーじゃ起こらなく、自前のサーバーだけで起こるので、自前サーバー問題であることは気がついてはいたんだけれど、なんか放置していたんだよねえ。
マルチサイトを使用しているサイトの改修で管理画面に入ると「サイトネットワークをアップグレード」を促され、そのままに行うも
「cURL error 28: Connection timed out after 10000 milliseconds」
が出てアップグレードできない。あんまり影響なさそうなのだが、とても気持ち悪いので、なんとか解決しようとcurlのエラー周りから探すも有効そうな情報は見つからない。ブラウザのキャッシュ消せ、とかそんなのばかりだ。
「レンタルサーバーでは起こらない、自前のサーバーでしか起こらない」ここが肝なんだから、サーバーの問題だと切り分けていたので、ブラウザの問題とは思えなかったのだな。
そんな切り口から探してたら答えがあったわ。
WordPressでREST API エラーの対処方法
https://www.ukilab.net/wordpress-rest-api-error-troubleshooting/
ukiLabさんありがとう!一発解決でした。方法は簡単。自前サーバーのhostsを修正すればいい。
自前のサーバーにSSHでログイン。viでhostsをいじります。
# vi /etc/hosts
そしてIPアドレスの後ろにドメインがついたものを追加します。
127.0.0.1 localhost www.webteq.site
とか
192.168.1.2 www.webteq.site
とかにしたものを追加する。
びっくりしたのが、すでに別の案件のサブドメインでこれやってた記述があったこと。すっかり忘れていたんだな。自分に驚くわ。
でもめんどいわなあ、毎度こんなの書いてくのは、、しかしhosts設定にはワイルドカードは使えないんだそうだ。
ワイルドカードってのはこういう設定ね。
192.168.1.2 *.site
NGならばしかたない。。。
しかしそういう人のためにdnsmasqというアプリがあるらしい。
解説してくれている人々のページを記しておこう。
https://someneat.hatenablog.jp/entry/2017/03/02/070042
https://o296.com/e-89e4cde5d39743f8a4390f18da67c423551c392f6fdd439e89d89a194b18e67a
ただ今はよしとこうっと。今回の案件が終わってからやるわ。大概ね、進行中の案件があるときにサーバーで無理すると失敗につながる。そのスリルも昔は面白かったけど、いまじゃそんなリスク負いたくないもんね。