Какие HTTP-статусы ответов ты знаешь?

«Какие HTTP-статусы ответов ты знаешь?» — вопрос из категории Сети, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

HTTP-статусы сгруппированы в пять классов, которые определяются первой цифрой трехзначного кода. В DevOps понимание этих статусов критически важно для мониторинга, логирования и отладки взаимодействия между сервисами.

1xx (Информационные) — запрос получен, обработка продолжается. Часто используются для управления протоколом.

  • 100 Continue: Сервер готов принять тело запроса.
  • 101 Switching Protocols: Сервер согласен сменить протокол (например, на WebSocket).

2xx (Успешные) — запрос успешно обработан.

  • 200 OK: Стандартный ответ на успешный запрос (GET, POST и др.).
  • 201 Created: Запрос привел к созданию нового ресурса (часто после POST).
  • 204 No Content: Сервер успешно обработал запрос, но не возвращает никакого контента (удачное удаление).

3xx (Перенаправления) — для завершения запроса требуется дополнительное действие.

  • 301 Moved Permanently: Ресурс навсегда перемещен на новый URL.
  • 302 Found: Ресурс временно доступен по другому URL.
  • 304 Not Modified: Используется для кэширования; ресурс не изменился с момента последнего запроса.

4xx (Ошибки клиента) — запрос содержит ошибку или не может быть выполнен.

  • 400 Bad Request: Сервер не может понять запрос из-за неверного синтаксиса.
  • 401 Unauthorized: Для доступа требуется аутентификация.
  • 403 Forbidden: Сервер понял запрос, но отказывается его авторизовать.
  • 404 Not Found: Сервер не может найти запрошенный ресурс.
  • 429 Too Many Requests: Клиент отправил слишком много запросов за короткое время (rate limiting).

5xx (Ошибки сервера) — сервер не смог выполнить корректный запрос.

  • 500 Internal Server Error: Общая ошибка сервера без конкретики.
  • 502 Bad Gateway: Сервер, действуя как шлюз или прокси, получил неверный ответ от вышестоящего сервера.
  • 503 Service Unavailable: Сервер временно не может обработать запрос (перегрузка, техобслуживание).
  • 504 Gateway Timeout: Шлюз или прокси не дождался ответа от вышестоящего сервера.

Практическое использование в DevOps:

  • Мониторинг: Настройка алертов на рост 5xx и 4xx ошибок в Prometheus/Grafana.
  • Логирование: Анализ логов доступа (например, nginx) для выявления паттернов сбоев.
  • Отладка: Использование curl для проверки ответов сервисов.
    # Проверка статуса и заголовков
    curl -I -X GET https://api.example.com/health
    # HTTP/2 200
    # content-type: application/json