503 vs 502

Service Unavailable vs Bad Gateway

🔧503Service Unavailable
🌉502Bad Gateway

Server Error Troubleshooting

Understanding the difference between 500, 502, and 503

💥
500
Internal Error
Server Crash

Something broke!

The server encountered an unexpected condition that prevented it from fulfilling the request.

📨Request
Sent to server
💥Server crashes/errors
Unhandled exception
⚠️500 Error
Common causes:
  • Unhandled exceptions in code
  • Database connection failures
  • Misconfigured server settings
🔥
🔌
502
Bad Gateway
Upstream Failure

Can't reach backend!

The gateway or proxy received an invalid response from the upstream server it tried to access.

👤Client
Request sent
🚪Gateway/Proxy
Forwards to upstream
Upstream server fails
Invalid/no response
⚠️502 Error
Common causes:
  • Upstream server is down
  • Network connectivity issues
  • Backend timeout or crash
🚧
503
Unavailable
Temporary Outage

Try again later!

The server is temporarily unable to handle requests due to maintenance or overload.

📨Request
Sent to server
🚧Server busy/maintenance
Cannot process now
⚠️503 Error
Common causes:
  • Scheduled maintenance
  • Server overload/too many requests
  • Resource exhaustion
Quick Decision Guide
Use 500 when:
  • Application code throws an exception
  • Database query fails unexpectedly
  • Critical configuration is missing
  • Generic error with no specific cause
Use 502 when:
  • Reverse proxy can't reach backend
  • Load balancer gets invalid response
  • API gateway connection fails
  • Upstream server returns malformed data
Use 503 when:
  • Server is in maintenance mode
  • Too many concurrent connections
  • Rate limit temporarily exceeded
  • Include Retry-After header
💡
Key Insight

500 means the server itself has a problem. 502 means the server is working but can't connect to its backend. 503 means the server is working but deliberately refusing requests. If you're using a reverse proxy (nginx, load balancer), you'll likely see 502. If your app code crashes, that's a 500. If you're deploying or overwhelmed with traffic, send 503.

Description

The server is not ready to handle the request, often due to maintenance or overloading.

When to Use
  • Server is temporarily overloaded and can't handle requests
  • Planned maintenance window
  • Include Retry-After header to indicate when to try again
Common Causes
  • Server maintenance
  • Server overloaded
  • Temporary outage
Description

The server was acting as a gateway and received an invalid response from the upstream server.

When to Use
  • Proxy/gateway received invalid response from upstream server
  • Backend server returned malformed data or crashed mid-response
  • Use when your server is a proxy and upstream failed
Common Causes
  • Upstream server is down
  • Proxy received invalid response
  • Backend server crashed