DNS
Confirm the domain resolves to the expected public IP.
This is the order I used when a site went down and people were already asking for answers. I started from the outside, not the logs.
I never start with the application logs. If the domain, certificate, or routing is broken, the logs can send you in the wrong direction and waste time.
| Order | Layer | Why it comes here |
|---|---|---|
| 1 | DNS / public IP | Prove the domain resolves to the correct destination. |
| 2 | TLS / certificate | Prove the site can complete HTTPS without a certificate or hostname problem. |
| 3 | Load balancer / reverse proxy | Prove traffic can reach the front door and is routed to a healthy backend. |
| 4 | Web server / app host | Check the service process, port binding, and app startup logs. |
| 5 | App dependencies | Check database, cache, queue, filesystem, and external API reachability. |
| 6 | Application logs | Now the logs are useful because the upstream layers are already proven. |
| 7 | Recovery validation | Prove the fix works from browser, API, and monitoring. |
This is the first pass I made in the opening minutes of an outage. Each step either confirmed a layer or told me where to look next.
Confirm the domain resolves to the expected public IP.
Confirm certificate chain, SNI, and expiry.
Confirm load balancer, reverse proxy, and firewall path.
Confirm the service is up and the host is serving requests.
Prove the fix works from browser and monitoring.
Check that DNS resolves to the correct public IP and that the record did not drift.
Confirm the certificate, SNI host name, chain, and expiry before moving deeper.
Verify load balancer, reverse proxy, firewall, and port bindings before the app layer.
Inspect service status, logs, database, cache, queue, and recent deployment changes.
nslookup anupkumarctech.com
Resolve-DnsName anupkumarctech.com
ping anupkumarctech.com
tracert anupkumarctech.com
Use this to confirm the public hostname points where you expect before checking the server.
curl -I https://anupkumarctech.com/articles/website-down-runbook/
curl -vk https://anupkumarctech.com
openssl s_client -connect anupkumarctech.com:443 -servername anupkumarctech.com
Use this to verify certificate chain, SNI, redirect behavior, and HTTPS handshake.
systemctl status nginx
systemctl status apache2
ss -lntp | grep ':80\|:443'
sudo journalctl -u nginx -n 100 --no-pager
Use this to check if the web server is running and listening on the expected ports.
ps aux | grep -i dotnet
tail -n 100 /var/log/nginx/error.log
tail -n 100 /var/log/app/app.log
curl -I http://127.0.0.1:5000/health
psql -h db-host -U appuser -d appdb -c "select 1;"
Use this to confirm the app process, local health endpoint, logs, and database connectivity.
Test-NetConnection db-host -Port 1433
sqlcmd -S db-host -U appuser -P "password" -Q "SELECT 1"
Use this when the site depends on Microsoft SQL Server.
Test-NetConnection db-host -Port 5432
psql -h db-host -U appuser -d appdb -c "select 1;"
Test-NetConnection db-host -Port 3306
mysql -h db-host -u appuser -p -e "select 1;"
Use this when the site depends on PostgreSQL or MySQL.
Get-Service W3SVC
Get-Website
Get-WebBinding
Get-ChildItem IIS:\AppPools
Use this to confirm the site exists, the bindings are correct, and the app pool is in a healthy state.
Get-WinEvent -LogName Application -MaxEvents 20
Get-WinEvent -LogName System -MaxEvents 20
curl.exe -vk http://localhost
Use this to check for startup failures, pool crashes, and local response behavior.
| Symptom | Likely layer | What to do |
|---|---|---|
| Domain points to wrong IP | DNS | Fix the A record or stale cache. |
| HTTPS fails but HTTP works | TLS | Check certificate, SNI, chain, and expiry. |
| 404 or wrong site responds | Reverse proxy / routing | Check nginx/IIS bindings and site mapping. |
| 502/503 | App process | Check service is running and listening. |
| App starts but one page fails | Dependency | Check database, cache, queue, or API call. |
| Only database-backed pages fail | Database | Test the DB connection directly before changing code. |
After deployment, the site returns 502 errors but DNS still resolves.
Confirm HTTPS, redirects, and the public response path first.
Verify reverse proxy, bindings, ports, and the app process.
Test the health endpoint and database connectivity if only some pages fail.
Re-test from browser and monitoring before closing the incident.
The site starts returning 502 errors after a deployment. Users can resolve DNS and reach the domain, but the home page does not load.
The working assumption here is that the failure sits between the edge and the app host, not that the entire app is down.
curl -vk https://anupkumarctech.com
Get-WebBinding
Get-Service W3SVC
systemctl status nginx
ss -lntp | grep ':80\|:443'
tail -n 100 /var/log/nginx/error.log
curl -I http://127.0.0.1:5000/health
Test-NetConnection db-host -Port 5432
That order keeps the diagnosis focused. Each command proves one layer before moving to the next.