Why Caddy Gives 502 When the Backend Works Fine by IP
A 502 usually means the browser-to-Caddy leg worked and the Caddy-to-upstream leg did not.
A 502 usually means the browser-to-Caddy leg worked and the Caddy-to-upstream leg did not.
Test the known address before rebooting a host just because its name stopped resolving.
A wall of attractive graphs is slow during an incident if related signals are scattered by exporter rather than by the question an operator is trying to answer.
A short pcap plus context is often more useful six months later than a page of remembered conclusions.
Resolve the symptom into DNS, routing, transport, policy, ingress or application before changing configuration.
`dig` gave me a way to separate resolver configuration, authoritative answers, record types and response timing instead of reducing DNS to 'name works' or 'name fails'.
Logs become useful when access records, proxy errors and request identity can be correlated.
Connectivity tests become useful only when each test is tied to a layer: local addressing, routing, DNS resolution, TCP reachability and the application itself.
Most beginner lab failures were not exotic protocol bugs. They were wrong masks, wrong VLANs, missing routes, stale assumptions and tests that did not isolate the failing layer.
I troubleshoot from the network boundary inward so I do not restart a healthy server because one naming or authorization layer failed.
A signalling-only ladder can say a call succeeded while the user heard silence; adding SDP and RTP events fixes that blind spot.
My first memorable ACL mistake was technically correct: it blocked exactly what I told it to block, including the management traffic I still needed.
A trunk can be up while one VLAN is still broken. That lab pushed me to verify allowed VLANs and operational state instead of assuming the link was simply good or bad.
Different protocols, same debugging discipline: establish state, identify the boundary, then follow the next dependency.
Before opening a full packet capture, sngrep gave me a quick view of call legs, response codes and dialog timing directly on the server.
A red backup alert identifies the outcome but usually does not explain which command, mount or permission caused the failure.
On a headless Linux box, tcpdump was faster than moving captures around blindly. A narrow capture at the right interface often answered the question immediately.
One-way audio was my first VoIP problem where the signaling looked healthy and the real fault was the address and port information used for RTP.