
This is a confusing situation — your monitoring tool is showing green, your server responds to a ping, but when you or your users try to open the site in a browser, nothing loads. What's going on?
The server being "up" and the website being "accessible" are actually two different things. Here's how to figure out which layer is broken.
A server can be running and responding to basic network requests while still having problems that prevent a browser from loading a web page. The web server software might be fine but the application behind it is broken. DNS might be pointing somewhere unexpected. A CDN might be serving stale or broken content.
Let's work through the most common causes.
DNS is often the first thing to check when a site is reachable from some places but not others.
DNS propagation delays: If you recently changed DNS records (moved hosts, updated A records, etc.) those changes can take time to spread across the internet. Your server is fine — some users just aren't reaching it yet because their DNS cache still has old information.
Expired domain: If your domain registration has lapsed, DNS stops resolving entirely. Check your domain's expiry date immediately — domain expiry monitoring can prevent this from catching you off guard.
Wrong DNS records: A typo in an A record or CNAME pointing to the wrong IP means traffic never arrives at your server.
How to check:
dig yourdomain.com
nslookup yourdomain.com
Compare the IP in the DNS result against your actual server IP.
If you're using Cloudflare, a CDN, or a reverse proxy, the "server up" check might be hitting the proxy layer — not your actual origin server.
The CDN reports healthy, but:
Try bypassing the CDN by accessing your server's IP address directly (if your hosting allows it) or temporarily pausing Cloudflare to rule it out.
Your web server (Nginx, Apache) is running and accepting connections, but the application behind it — PHP, Node.js, Python — has crashed or is returning errors.
From the outside, this can look like the site is "up" (the server responds) but "broken" (it returns a 500-level error or a blank page).
Check your application logs:
sudo tail -f /var/log/nginx/error.log
sudo journalctl -u your-app-service -f
Restart your application process if it's crashed.
If your SSL certificate has expired or is misconfigured, modern browsers will refuse to load the site and show a security warning instead.
Your server is technically up — it's just serving a certificate that browsers won't accept. Check your certificate expiry date and whether the certificate matches your domain. SSL monitoring can alert you before this becomes a problem.
Sometimes the problem is entirely on the client side. A corrupted cache entry can prevent a specific browser or device from loading a site that works fine everywhere else.
Try:
sudo dscacheutil -flushcache on macOS, ipconfig /flushdns on WindowsIf other devices can load the site fine, the problem is local to that browser or machine.
A server-level firewall might be blocking port 80 or 443 for web traffic while still responding to ICMP ping requests. This means the server "pings" as up but can't actually serve web pages.
sudo ufw status
sudo ss -tlnp | grep -E ':80|:443'
Make sure port 80 and 443 are open and that your web server is actively listening on them.
The server is up but has run out of memory, file descriptors, or database connections. It's technically alive but can't handle new requests.
Check:
free -h # Memory
df -h # Disk space
ulimit -n # Open file limit
A server with full disk space is a common culprit — many Linux systems refuse to write logs or process requests when the disk is 100% full.
Work through this checklist:
curl http://yourdomain.com from the server itself work? → If no, app-layer issuedig yourdomain.com return your correct IP? → If no, DNS issueThe fact that your basic ping check said "up" while your site wasn't loading highlights a key limitation of simple monitors. A proper website monitoring setup checks for an actual valid HTTP response — not just a network ping.
Domain Monitor checks your site returns a real response code, monitors SSL expiry, and can alert you via email, SMS, or Slack if anything is wrong.
A subdomain takeover lets an attacker claim your subdomain by exploiting dangling DNS records. Learn how it happens, real-world examples, and how DNS monitoring detects it.
Read moreMean time to detect (MTTD) measures how long it takes to discover an incident after it starts. Reducing MTTD is one of the highest-leverage improvements in reliability engineering.
Read moreBlack box monitoring tests your systems from the outside, the way users experience them — without access to internal code or infrastructure. Learn how it works and when to use it.
Read moreLooking to monitor your website and domains? Join our platform and start today.