Der Server kann gerade keine Anfragen verarbeiten.
Wann du ihn verwendest
Wartung oder Überlastung. Gib Retry-After mit, wenn du weißt, wann der Dienst wieder da ist.
Häufige Ursachen und Lösungen
Der Server lehnt Anfragen absichtlich oder vorübergehend ab: Wartungsmodus, Überlastung, alle Backends fallen durch die Health-Checks oder ein Rate Limit, denn nginx limit_req gibt standardmäßig 503 zurück. Auf einem Load Balancer bedeutet 503 meist, dass es keine registrierten oder gesunden Targets gibt: Prüfe die Target-Health, Pfad und Port des Health-Checks und ob neue Deployments ihn bestehen. Kubernetes-Ingress zeigt dasselbe, wenn ein Service keine bereiten Endpoints hat.
Gib bei geplanter Wartung 503 mit Retry-After zurück statt 200 mit einer Wartungsseite, damit Suchmaschinen deine Seiten im Index behalten; Google toleriert 503 ein, zwei Tage, längere Ausfälle können aber URLs aus dem Index werfen. Clients sollten mit Backoff erneut versuchen und Retry-After beachten. Halte Health-Checks günstig, damit eine langsame Datenbank nicht alle Instanzen gleichzeitig aus der Rotation nimmt.
Server-Fehler (5xx)
5xx-Codes sind Server-Fehler: Die Anfrage kann in Ordnung sein, aber der Server oder etwas dahinter ist ausgefallen. Für diese Codes lohnt sich eine Alarmierung.
So sieht es aus
HTTP/1.1 503 Service UnavailableSo sendest du ihn
| Node.js / Express | res.status(503).end() |
|---|---|
| Python / Flask | return '', 503 |
| nginx | return 503; |
So prüfst du ihn
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/