Далеко не все сообщения сервера, которые выводятся на экран, кричат о проблемах. Некоторые из них означают, что запрос обработан успешно. Перед тем как волноваться из-за увиденного кода ошибки, стоит узнать, как правильно расценивать каждый код. Также понимание кодов ошибок сервера помогает быстрее находить и устранять проблемы и избегать долгих простоев системы.
В статье дали полный список ошибок сервера, назвали их причины и предложили способы их устранения.
Определение HTTP-кодов
HTTP-коды состояния — это стандартизированные трёхзначные числовые коды, которые применяются в протоколе HTTP для обозначения состояния выполнения серверного запроса. Коды передаются в ответе сервера и содержат обратную связь о том, как сервер обработал запрос, что при этом нужно делать клиенту и были ли обнаружены проблемы.
Коды состояния являются частью заголовков HTTP-ответа и помогают клиенту, будь то браузер или приложение, понять, как обработать полученные данные. Например, клиент может узнать, был ли запрос обработан успешно, требуются ли доп. действия (например, перенаправление) или произошёл сбой на сервере.
HTTP-коды всегда состоят из трёх цифр:
- первая цифра определяет категорию состояния,
- остальные две цифры уточняют причину ответа.
Категории HTTP-кодов
- 1xx: Информационные (Informational). Код 1xx говорит о том, что сервер находится в процессе обработки запроса. Обычно такие ответы используются на ранних стадиях выполнения сложных запросов. Перечень кодов 1хх.
- 2xx: Успешные (Success). Коды 2xx подтверждают успех обработки запроса. Сервер возвращает ожидаемые данные. Список ошибок 2хх.
- 3xx: Перенаправления (Redirection). 3xx призывают клиента выполнить дополнительные действия, чтобы завершить запрос. Чаще всего это связано с перенаправлением на другой URL. Все ошибки 3хх.
- 4xx: Ошибки клиента (Client Errors). Коды 4xx говорят об ошибке клиента, из-за которой сервер не может выполнить запрос. Перечень 4хх-ошибок.
- 5xx: Ошибки сервера (Server Errors). 5xx кричат о внутренних ошибках, которые мешают серверу обработать запрос. Список ошибок 5хх.
Те или иные ошибки важны для оперативной диагностики и исправления ошибок. Вот несколько примеров их практического использования.
- Обнаружение ошибок. Коды 4xx и 5xx помогают понять, где произошёл сбой: на стороне клиента или сервера.
- Улучшение UX. Использование корректных кодов позволяет браузерам и приложениям предлагать пользователю более точные сообщения об ошибках.
- Мониторинг и аналитика. Инструменты мониторинга, такие как Google Analytics или серверные логи, используют коды для анализа производительности и стабильности сайта.
- Оптимизация кеширования. Коды вроде 304 Not Modified помогают сократить количество данных, передаваемых между клиентом и сервером.
Ранее в статье рассказывали, что такое кеш и как его почистить.
Интерпретация HTTP-кодов
- Проблема на стороне клиента. Коды из категорий 1xx, 2xx и 3xx не требуют вмешательства со стороны пользователя — они свидетельствуют о нормальной работе системы. Если возникают коды 4xx, это сигнал о необходимости перепроверки запроса.
- Проблема на стороне сервера. Коды 5xx требуют немедленного вмешательства разработчиков, поскольку указывают на проблемы в серверной инфраструктуре или коде приложения. Диагностика таких ошибок обычно начинается с анализа серверных логов.
Полный список ошибок сервера
Ниже представлен список ошибок сервера с описанием их причин и рекомендациями по устранению.
Ошибки категории 1xx
Ошибки типа 1xx (Informational) — это коды состояния HTTP, которые сигнализируют о промежуточных действиях. Они информируют клиента о том, что запрос принят и продолжает обрабатываться, но окончательный ответ еще не сформирован.
100 Continue. Клиент может продолжать отправку оставшейся части запроса. Клиент отправил начальную часть запроса и ожидает подтверждения от сервера.
Решение. Убедитесь, что сервер поддерживает протокол HTTP/1.1. Клиент должен продолжить передачу данных после получения этого кода.
101 Switching Protocols. Сервер сигнализирует о смене протокола связи, запрошенной клиентом (например, с HTTP на WebSocket). Клиент запросил использование другого протокола через заголовок Upgrade.
Решение. Убедитесь в том, что сервер поддерживает новый протокол. Проверьте правильность заголовков Upgrade и Connection.
102 Processing (WebDAV). Сервер обработал запрос, но выполнение ещё не завершено. Причина — задержка в обработке запроса, например, сложные операции с файлами.
Решение. Оптимизируйте серверные процессы, чтобы ускорить выполнение операций.
103 Early Hints. Предназначен для указания клиенту, что сервер отправляет заголовки, содержащие предварительную информацию, до формирования окончательного ответа. Это помогает ускорить загрузку ресурсов.
Решение. Убедитесь, что сервер настроен для отправки заголовков 103 Early Hints только в тех случаях, когда это необходимо.
Ошибки категории 2xx
Ошибки типа 2xx (Success) — это коды состояния HTTP, указывающие, что запрос клиента был успешно обработан. Это не ошибки, а успешные статусы.
200 OK. Запрос успешно выполнен, и сервер возвращает ожидаемый результат. Всё работает корректно. Это не ошибка. Дальнейшие действия не требуются.
201 Created. Сервер успешно создал новый ресурс в результате обработки запроса. Запрос POST был выполнен корректно. Убедитесь, что возвращаемый URI нового ресурса указан в заголовке Location.
202 Accepted. Запрос принят, но ещё не обработан. Задачи требуют дополнительного времени для выполнения. Настройте клиент для повторных запросов проверки статуса выполнения.
203 Non-Authoritative Information. Указывает, что сервер вернул успешный ответ, но информация была изменена или не является оригинальной (например, прошла через промежуточный сервер или прокси).
204 No Content. Указывает, что запрос был успешно обработан, но сервер не возвращает тело ответа. Обычно используется для обновления ресурсов без необходимости возвращать данные.
205 Reset Content. Указывает, что запрос был успешно обработан, и сервер сообщает клиенту, что тот должен сбросить (перезагрузить) текущий представляемый контент. Например, для очистки формы на веб-странице.
206 Partial Content. Указывает, что сервер успешно обработал частичный запрос. Используется, например, для скачивания части файла с помощью заголовка Range.
207 Multi-Status (WebDAV). Указывает, что сервер возвращает несколько статусов в одном ответе (например, для множества ресурсов). Обычно используется в протоколе WebDAV.
208 Already Reported (WebDAV). Указывает, что члены связанного ресурса уже были перечислены в предыдущем ответе, поэтому их повторное перечисление не требуется.
226 IM Used (RFC 3229). Указывает, что сервер успешно обработал запрос с использованием метода обновления (например, передача только изменений документа вместо полного ответа).
Ошибки категории 3xx
Ошибки типа 3xx (Redirection) — это коды состояния HTTP, которые указывают, что клиент должен выполнить дополнительные действия для завершения запроса. Обычно это связано с перенаправлением.
300 Multiple Choices. Сервер возвращает несколько возможных вариантов ответа. Один запрос может соответствовать нескольким ресурсам.
Решение. Настройте клиент для выбора подходящего варианта.
301 Moved Permanently. Ресурс был окончательно перенесён на новый URL. Администратор изменил расположение ресурса.
Решение. Убедитесь, что клиент обновляет закешированный URL.
302 Found. Ресурс временно перемещён на другой URL. Сервер перенаправляет запрос на временный адрес.
Решение. Проверьте корректность заголовков редиректа.
303 See Other. Используется, например, для перенаправления после успешной отправки формы.
Решение. Клиент должен получить ресурс с другого URL, используя метод GET.
304 Not Modified. Клиенту возвращается информация о том, что содержимое ресурса не изменилось. Заголовки запроса включали If-Modified-Since или ETag. Клиент может использовать закешированную версию ресурса.
Решение. Проверьте, правильно ли сервер обрабатывает условия проверки.
305 Use Proxy (Deprecated). Указывает, что ресурс доступен только через прокси-сервер. Из соображений безопасности использование этого кода было отменено в современных версиях HTTP. Предполагалось, что нужно настроить клиент для использования указанного прокси-сервера или обновить серверную конфигурацию, чтобы устранить требование прокси.
306 (Unused). Этот код зарезервирован, но не используется. Он был предназначен для будущего использования, но исключен из спецификации.
307 Temporary Redirect. Сервер временно перенаправляет запрос на другой URL, но метод HTTP не изменяется. Временная переадресация ресурса.
Решение. Клиенту следует использовать указанный URL для последующих запросов.
308 Permanent Redirect. Ресурс окончательно перемещён на новый URL, при этом метод HTTP сохраняется. Постоянная переадресация ресурса.
Решение. Настройте клиент для обновления URL.
Ошибки категории 4xx
Ошибки категории 4xx (Client Error) — это коды состояния HTTP, которые указывают, что проблема возникла из-за клиента (браузера, API-запроса и т. д.).
400 Bad Request. Допущена ошибка в ссылке, сервер неспособен успешно обработать запрос. Неверный формат данных, некорректные параметры.
Решение. Перепроверьте запрос на ошибки.
401 Unauthorized. Доступ запрещён из-за отсутствия аутентификации. Отсутствующая или неверная авторизация.
Решение. Введите учётные данные в системе ещё раз.
402 Payment Required (Reserved). Нестандартная ошибка клиента, предназначенная для будущего применения. Иногда она означает, что запрос не может быть выполнен, пока клиент не оплатит счёт через платёжную систему.
Решение. Запрошенный контент не станет доступен, пока клиент не совершит оплату.
403 Forbidden. Доступ запрещён даже при наличии аутентификации. Нехватка прав доступа или чёрный список IP.
Решение. Проверьте права доступа и настройки серверных правил.
404 Not Found. Ресурс не найден на сервере. Неверный URL, владелец ресурса удалил страницу.
Решение. Перепроверьте путь (URL) и убедитесь в существовании ресурса.
405 Method Not Allowed. Используемый метод HTTP не поддерживается для данного сайта. Попытка выполнения неподдерживаемого действия, например, POST вместо GET.
Решение. Проверьте документацию API или настройки сервера.
406 Not Acceptable. Указывает, что сервер не может вернуть ответ, соответствующий заголовкам Accept, указанным клиентом.
Решение. Измените заголовок Accept в запросе клиента на более широкий или подходящий формат, который сервер может обработать, либо настройте сервер для поддержки требуемого формата.
407 Proxy Authentication Required. Указывает, что для доступа через прокси требуется аутентификация.
Решение. Клиент должен предоставить учетные данные прокси-сервера.
408 Request Timeout. Сервер отклонил запрос, так как он слишком долго не завершался. Проблемы с сетевым соединением клиента или слишком долгое выполнение запроса.
Решение. Проверьте скорость соединения и упростите запрос.
409 Conflict. Указывает, что запрос не может быть выполнен из-за конфликта с текущим состоянием ресурса (например, попытка обновления данных, которые изменились на сервере).
Решение. Устраните конфликт данных, синхронизируя запрос с текущим состоянием ресурса на сервере.
410 Gone. Указывает, что запрашиваемый ресурс был удален с сервера и больше не доступен.
Решение. Убедитесь, что запрашиваемый ресурс больше не нужен, или обновите клиент для использования альтернативного ресурса.
411 Length Required. Указывает, что сервер требует указания длины содержимого (Content-Length) в запросе, но этот заголовок отсутствует.
Решение. Добавьте заголовок Content-Length с корректным значением в запрос.
412 Precondition Failed. Указывает, что одна или несколько условий, указанных в заголовках запроса (например, If-Match), не были выполнены.
Решение. Проверьте условия запроса (например, заголовки If-Match) и убедитесь, что они выполняются для текущего состояния ресурса.
413 Payload Too Large. Указывает, что размер тела запроса (payload) превышает допустимый предел, установленный сервером.
Решение. Уменьшите размер тела запроса или настройте сервер для поддержки больших объемов данных.
414 URI Too Long. Указывает, что длина запрашиваемого URI превышает лимит, установленный сервером.
Решение. Сократите длину URI или используйте метод POST для передачи данных в теле запроса вместо параметров в URL.
415 Unsupported Media Type. Указывает, что сервер не поддерживает формат данных, указанный в заголовке Content-Type запроса.
Решение. Проверьте и измените заголовок Content-Type на поддерживаемый сервером формат.
416 Range Not Satisfiable. Указывает, что запрашиваемый диапазон данных (заголовок Range) недоступен для ресурса.
Решение. Убедитесь, что заголовок Range соответствует доступным данным ресурса.
417 Expectation Failed. Указывает, что сервер не может выполнить требования, указанные в заголовке Expect.
Решение. Удалите или измените заголовок Expect, если сервер не поддерживает указанные ожидания.
418 I'm a teapot (шутливый код). Добавлен как шутка, указывает, что сервер-чайник не может заварить кофе (в рамках протокола HTCPCP).
Решение. Исправьте код на клиенте, так как это шутливый код состояния, не предназначенный для реального использования.
421 Misdirected Request. Указывает, что запрос был направлен на сервер, который не может обработать его (например, из-за ошибки в маршрутизации).
Решение. Убедитесь, что запрос направляется на правильный сервер или исправьте настройки маршрутизации.
422 Unprocessable Entity (WebDAV). Указывает, что запрос был корректно сформирован, но сервер не может его обработать из-за семантической ошибки.
Решение. Исправьте семантические ошибки в теле запроса или проверьте корректность данных.
423 Locked (WebDAV). Указывает, что запрашиваемый ресурс заблокирован.
Решение. Разблокируйте ресурс или дождитесь снятия блокировки.
424 Failed Dependency (WebDAV). Указывает, что запрос не выполнен из-за сбоя в зависимом запросе.
Решение. Исправьте зависимый запрос, который вызвал сбой.
425 Too Early. Указывает, что сервер не готов обработать запрос, поскольку он может быть выполнен в неподходящее время.
Решение. Отложите выполнение запроса до момента, когда он будет безопасен для обработки.
426 Upgrade Required. Указывает, что клиент должен перейти на другой протокол (например, HTTPS) для обработки запроса.
Решение. Переключите клиент на требуемый протокол, например, на HTTPS.
428 Precondition Required. Указывает, что сервер требует выполнения предварительных условий, например, с помощью заголовков If-Match.
Решение. Добавьте необходимые предварительные условия в запрос (например, заголовки If-Match или If-None-Match).
429 Too Many Requests. Клиент отправил слишком много запросов за короткий промежуток времени, превысив лимит сервера.
Решение. Уменьшите частоту запросов со стороны клиента, добавьте задержку между запросами или настройте сервер для увеличения лимита.
Код ошибки 429 Too Many Requests: причины, последствия и решения
431 Request Header Fields Too Large. Указывает, что один или несколько заголовков запроса слишком велики для обработки сервером.
Решение. Уменьшите размер заголовков запроса, убрав ненужные данные или сокращая длинные значения.
451 Unavailable For Legal Reasons. Доступ к ресурсу запрещен из-за юридических или нормативных ограничений.
Решение. Убедитесь, что запрос соответствует юридическим требованиям или используйте альтернативные ресурсы.
Ошибки категории 5xx
Ошибки категории 5xx (Server Error) указывают на проблемы, возникшие на стороне сервера.
500 Internal Server Error. Общая ошибка, указывающая на сбой в работе сервера. Неправильная конфигурация сервера, сбой в коде приложения.
Решение. Проверьте серверные логи для диагностики проблемы.
501 Not Implemented. Сервер не может обработать запрос из-за нехватки функционала. Попытка вызова неразработанной функции.
Решение. Реализуйте недостающий функционал или измените запрос.
502 Bad Gateway. Промежуточный сервер (шлюз) получил некорректный ответ от другого сервера. Проблемы с подключением к внешнему сервису.
Решение. Проверьте доступность стороннего сервиса.
503 Service Unavailable. Сервер временно не может обработать запрос из-за перегрузки или технических работ. Перегрузка, отказ оборудования или профилактика.
Решение. Увеличьте ресурсы сервера или настройте балансировку нагрузки.
504 Gateway Timeout. Промежуточный сервер не дождался ответа от конечного сервера. Долгое выполнение задачи на конечном сервере.
Решение. Оптимизируйте ресурсы на сервере и перепроверьте подключение к Интернету.
505 HTTP Version Not Supported. Сервер не поддерживает указанную версию HTTP. Причина — устаревший клиент или серверное ПО.
Решение. Обновите клиент или настройте сервер на поддержку старых версий.
506 Variant Also Negotiates. Указывает, что сервер столкнулся с ошибкой в процессе выбора варианта ответа.
Решение. Проверьте конфигурацию сервера и устраните ошибки в механизме согласования вариантов ответа.
507 Insufficient Storage (WebDAV). Указывает, что сервер не может обработать запрос из-за нехватки места для хранения.
Решение. Увеличьте доступное дисковое пространство на сервере или удалите ненужные данные.
508 Loop Detected (WebDAV). Указывает, что сервер обнаружил бесконечный цикл при обработке запроса.
Решение. Проанализируйте запросы и серверную логику, чтобы устранить циклические зависимости.
510 Not Extended. Указывает, что сервер требует дополнительных расширений для выполнения запроса.
Решение. Добавьте необходимые расширения или функции, которые сервер требует для обработки запроса.
511 Network Authentication Required. Указывает, что клиент должен пройти аутентификацию в сети перед выполнением запроса.
Решение. Настройте клиент для прохождения аутентификации в сети (например, ввод логина и пароля или настройка прокси).
Коды 520–530 специфичны для сервисов, таких как Cloudflare и Pantheon, и не являются частью стандартного списка HTTP-кодов. Стандартные коды HTTP заканчиваются на 511 Network Authentication Required.
520 Unknown Error (Cloudflare-specific). Указывает, что сервер вернул неизвестную ошибку. Это специфический код для Cloudflare.
Решение. Проверьте логи сервера на предмет внутренних ошибок и настройте прокси-сервер Cloudflare.
521 Web Server Is Down (Cloudflare-specific). Указывает, что сервер недоступен или не отвечает на запросы.
Решение. Убедитесь, что веб-сервер работает и принимает соединения.
522 Connection Timed Out (Cloudflare-specific). Указывает, что соединение между сервером и прокси Cloudflare истекло.
Решение. Увеличьте время ожидания или проверьте сетевые настройки сервера.
523 Origin Is Unreachable (Cloudflare-specific). Указывает, что прокси-сервер не может подключиться к исходному серверу.
Решение. Проверьте DNS-записи или сетевые подключения вашего сервера.
524 A Timeout Occurred (Cloudflare-specific). Указывает, что сервер не смог завершить обработку запроса за установленное время.
Решение. Увеличьте время обработки на сервере или оптимизируйте работу приложения.
525 SSL Handshake Failed (Cloudflare-specific). Указывает, что TLS/SSL-соединение между сервером и Cloudflare не удалось.
Решение. Проверьте настройки сертификатов SSL/TLS на сервере.
526 Invalid SSL Certificate (Cloudflare-specific). Указывает, что SSL-сертификат сервера недействителен или просрочен.
Решение. Обновите SSL-сертификат или проверьте его конфигурацию.
527 Railgun Error (Cloudflare-specific). Указывает на проблему с соединением через Railgun-прокси.
Решение. Проверьте настройки Railgun-сервиса и серверного подключения.
Ошибка 530:
- 530 Site is Frozen (Pantheon-specific). Указывает, что сайт заморожен из-за отсутствия оплаты или других ограничений.
Решение. Активируйте сайт, выполнив необходимые действия, например, оплату. - 530 User Access Denied (Microsoft-specific). Указывает, что доступ к ресурсу был запрещен для текущего пользователя.
Решение. Проверьте разрешения пользователя и настройки доступа.
550 Permission Denied (SMTP-specific). Этот код не относится к HTTP, но используется в протоколе SMTP для указания на отказ в выполнении команды из-за отсутствия прав доступа.
Решение. Убедитесь, что у пользователя есть соответствующие права для выполнения команды.
Инструменты мониторинга и диагностики HTTP-ошибок
Своевременная диагностика ошибок невозможна без специализированных инструментов, которые помогают не только выявить проблему, но и оперативно её устранить. Рассмотрим основные подходы и программные средства для мониторинга и анализа HTTP-кодов.
Анализ серверных логов
Логи сервера содержат подробную информацию обо всех запросах и возникающих ошибках. Их изучение — первый шаг при устранении проблем.
Для веб-серверов Apache и Nginx. Файлы логов расположены в директориях:
Apache: /var/log/apache2/error.log
Nginx: /var/log/nginx/error.log
Пример команды для анализа последних записей:
tail -f /var/log/nginx/error.log
Фильтруйте ошибки по коду с помощью grep:
grep "500" /var/log/nginx/access.log
Настройте ротацию логов, чтобы избежать переполнения дискового пространства.
Утилиты для тестирования запросов и API
Эти инструменты полезны для отправки запросов на сервер, изучения ответов и выявления некорректных настроек.
Postman используется для создания, отправки и отладки API-запросов.
- Позволяет проверять правильность заголовков, тела запроса и методов HTTP (GET, POST, PUT, DELETE).
- Удобен для тестирования аутентификации и редиректов.
Curl (встроенная консольная утилита) — лёгкий способ отправить запрос и получить ответ от сервера.
Проверить наличие ошибки:
curl -I https://example.com
Отправить POST-запрос с данными:
curl -X POST -d "param1=value1¶m2=value2" https://example.com/api
Инструменты мониторинга производительности
Мониторинг серверов в реальном времени необходим для обнаружения ошибок до того, как они коснутся посетителей и оттолкнут их.
Например, Zabbix поддерживает мониторинг состояния веб-серверов и HTTP-ответов. Можно настроить HTTP-чек так, что он будет отслеживать корректность кода состояния. Если код отличается от 200, отправляется уведомление.
Grafana + Prometheus используется для визуализации данных мониторинга. Метрики HTTP-запросов и их ошибок легко отслеживаются на интерактивных дашбордах.
Datadog — платформа для сбора метрик, анализа логов и мониторинга доступности веб-приложений. Подходит для контроля кодов 4xx и 5xx в режиме реального времени.
Диагностика сетевых проблем
Если HTTP-код ошибки связан с сетью (например, 504 Gateway Timeout), используйте сетевые инструменты.
Wireshark анализирует сетевой трафик для диагностики проблем с маршрутизацией или потерей пакетов. Также он показывает детальный отчёт о передаче данных между клиентом и сервером.
Ping и Traceroute проверяют доступность сервера. Команды для них следующие:
ping example.com
traceroute example.com
Netcat (nc) тестирует открытые порты на сервере.
Например, проверить доступность порта 80 можно при помощи команды:
nc -zv example.com 80
Интеграция с системами уведомлений
Качество мониторинга повышается с использованием систем мгновенных уведомлений.
Настройте отправку предупреждений о критических HTTP-кодах (например, 500, 503) в мессенджеры:
- Telegram через боты,
- Slack для командной работы.
Пример для Zabbix:
- Укажите условия триггера: код состояния ⩾ 500.
- Свяжите уведомления с ботом Telegram.
Системы аналитики ошибок
Инструменты для сбора данных о сбоях помогут не только выявить проблему, но и предложить пути её решения.
Sentry автоматически собирает данные об ошибках приложения, включая HTTP-коды. Также Sentry генерирует отчёты с информацией о причине ошибки и её влиянии на пользователей.
New Relic позволяет отслеживать метрики производительности серверов и веб-приложений. Система визуализирует частоту ошибок и предлагает рекомендации по оптимизации.
Выводы
Умение разбираться в кодах ошибок помогает разработчикам и администраторам, а также зачастую и простым пользователям, быстро находить и устранять проблемы.
Совмещение анализа логов, тестирования запросов и использования автоматизированных систем мониторинга позволяет администраторам серверов и разработчикам оперативно выявлять и устранять проблемы. Важно включить эти инструменты в рабочий процесс, чтобы минимизировать влияние ошибок на пользователей и бизнес в целом.
Читайте в блоге:
- Как настроить 3proxy: от первого запуска до исправления ошибок
- Что такое Cloudflare, как он работает и для чего нужен