What this means
The plugin sentence: Your server could not reach its own site, so this check had nothing to read.
Many checks work by having your server request its own site, through Cloudflare, the way a visitor would. When those requests time out or the connection is refused, there is no answer to read, so the checks that need one say Could not check with this reason. Port 443 not answering in time for check A5 is the same reason.
Like every request Edge Doctor sends, these go only to the hosts of your Site Address and WordPress Address (home_url() and site_url()). An address WordPress gives on another host, such as a single sign on page, is never requested.
Checks that report it
These checks can report it:
- A1 Cloudflare detection and connection type
- A4 Redirect loops and HTTP to HTTPS
- A5 Certificate on your server
- C1 wp-admin and the login page in the cache
- C2 WooCommerce cart, checkout and account in the cache
- C3 Logged-in pages in the public cache
- C4 REST API and Store API in the cache
- C5 Login cookies and private responses
- C6 Cached pages older than their nonces
- D1 Rocket Loader
- D2 Email Obfuscation
- E1 Cloudflare blocking your own server
- E2 Cloudflare Access in front of admin-ajax.php
- E3 Cloudflare 52x errors
Symptoms you may notice
- Several groups say Could not check at once.
- Site Health reports that a loopback request or the REST API failed.
- Scheduled posts show Missed schedule, because WP-Cron also runs through a request from the site to itself.
Why it happens
The request leaves the server towards your public domain and has to come back. Typical causes: the network does not route a server’s traffic back to its own public address (hairpin NAT), a firewall on the server drops outgoing connections to it, or the domain resolves on the server to an address that does not answer.
If Cloudflare answers with a block or a challenge, that is not this reason: the request got an answer, and check E1 reports it.
Confirm it by hand
From the server (SSH), request your own site:
curl -sS -o /dev/null -w "%{http_code} %{time_total}s\n" "https://example.com/"
getent hosts example.comA timeout or connection refused confirms it. The second line shows which address the server uses for your domain.
How to fix it
On the server: ask your host to let the server reach its own domain, and check the server firewall for outgoing rules. On a VPS, the address the domain resolves to on the server must answer.
In Cloudflare: if requests reach Cloudflare but no answer comes back, look for your server’s address in the security events.
In WordPress: nothing to change unless a plugin blocks outgoing requests; then see the blocked-by-config guide.
Limitations
The plugin knows the request failed, not why. The evidence of the check names the request that got no answer.
Related checks
- E1 Cloudflare blocking your own server
- E3 Cloudflare 52x errors
- A1 Cloudflare detection and connection type
Sources
Run these checks on your own site with Edge Doctor for Cloudflare®, free on WordPress.org.
Edge Doctor for Cloudflare® is not affiliated with or endorsed by Cloudflare, Inc. Cloudflare is a registered trademark of Cloudflare, Inc.