HTTP 503 Service Unavailable
Overview
The HTTP 503 Service Unavailable
status code indicates that the server is not ready to handle the request. Common causes include the server being down for maintenance, overloading, or experiencing temporary issues.
Purpose
The HTTP 503 response is used to inform the client that the server is currently unable to handle the request and that the condition is likely to be temporary.
Usage
Client Behavior:
- Send Request: The client sends an HTTP request to the server.
- Receive Response: The client receives an HTTP 503 status code, indicating service unavailability.
Server Behavior:
- Unavailable Condition: The server is currently unable to handle the request.
- Send Response: The server sends a
503 Service Unavailable
response to the client.
Scenarios
- Server Maintenance: When the server is undergoing maintenance and is temporarily unavailable.
- Overloaded Server: The server is currently overloaded and unable to handle additional requests.
Sequence Diagram
Illustrating the process for an HTTP 503 response:
sequenceDiagram participant Client participant Server Note over Client: Step 1: Client sends a request Client->>Server: GET /resource HTTP/1.1 (Step 1) Note over Server: Step 2: Server is currently unavailable Server-->>Client: HTTP/1.1 503 Service Unavailable (Step 2)
Curl Request and Response Example
Sending a request using Curl to a server that is currently unavailable:
curl -i http://example.com/resource
# Expected response: HTTP/1.1 503 Service Unavailable
PHP cURL Request and Response Example
PHP script using cURL to handle a 503 Service Unavailable response:
<?php
$ch = curl_init('http://example.com/resource');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == 503) {
echo "Service Unavailable";
}
curl_close($ch);
?>
Python Request and Response Example
Python script sending a request to a server that is currently unavailable and handling a 503 Service Unavailable response:
import requests
response = requests.get('http://example.com/resource')
if response.status_code == 503:
print("Service Unavailable")
Apache Configuration for HTTP 503 Service Unavailable
Configuring Apache to handle 503 errors:
# Apache Configuration Example
ErrorDocument 503 "Service Unavailable"
NGINX Configuration for HTTP 503 Service Unavailable
NGINX configuration for handling 503 errors:
# NGINX Configuration Example
error_page 503 /503.html;
location = /503.html {
internal;
return 503 "Service Unavailable";
}
HTTP 502 Bad Gateway HTTP 504 Gateway Timeout