A customer on a VPN could not get into the site. We had blocked him, and the reason was ordinary: his VPN exit address sat in a blacklisted hosting range. We unblocked his address and nothing else.

The part worth writing down is the block page. It shows a Ref number, and that number is meant to be the visitor’s IP. It was showing a Cloudflare address instead.

Two places, one bug

The wrong address was not only on the block page. The same parsing bug sat in the shared Cloudflare check that other pages call. We fixed both places and shipped the change as one hotfix, then loaded the page and confirmed it live before closing the ticket.

The same week, a wider rule

Scanner requests for .php paths were still reaching our server, and we found out why and closed the gap with a wider Cloudflare rule. A wide rule on a file extension is exactly the kind that catches real files, so the check that mattered was whether it spared a real customer photo. It did, and we verified that live before the ticket closed.

The crawl tool we use to check pages for problems already lived in our own tooling, so the ticket to build one closed as no-code. Two follow-ups came out of it: one to verify the first weekly crawl run actually happens, and one for an IP Octet Review script that does not exist yet.

What to take from it

Load your own block page from behind your proxy and read the address it prints. If it is the proxy’s address, it cannot help anyone diagnose a real customer. Then look for the same parsing in other checks, because it was in two places here.