Назад в блог

Устранение распространенных кодов ошибок HTTP

Устранение распространенных кодов ошибок HTTP

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

Эти коды представляют собой трехзначные целые числа, каждое из которых обозначает определенный статус. На основе первой цифры HTTP-коды делятся на пять категорий:

  • Информационные ответы: значения находятся в диапазоне от 100 до 199. Они указывают на то, что запрос был получен и обрабатывается.

  • Успешные ответы: значения находятся в диапазоне от 200 до 299. Они означают, что действие было успешно получено, понято и принято.

  • Сообщения о перенаправлении: значения находятся в диапазоне от 300 до 399. Они означают, что для выполнения запроса необходимы дальнейшие действия.

  • Ответы об ошибках клиента: значения находятся в диапазоне от 400 до 499. Либо запрос содержит неверный синтаксис, либо он не может быть выполнен.

  • Ответы об ошибках сервера: значения находятся в диапазоне от 500 до 599. Они означают, что серверу не удалось обработать корректный запрос.

В этом руководстве мы рассмотрим некоторые из наиболее распространенных кодов ошибок HTTP, с которыми сталкиваются все (4xx и 5xx), с точки зрения системного администратора. К ответу веб-сервера с определенным кодом может привести множество ситуаций. Кроме того, в этом руководстве будут рассмотрены возможные причины и решения.

Ошибки клиента и ошибки сервера

Коды ошибок с 400 по 499 возникают на стороне клиента пользователя (веб-браузера или любого HTTP-клиента). Хотя эти ошибки в основном связаны с клиентом, полезно знать, с каким кодом сталкивается пользователь. Это может помочь определить, может ли потенциальная проблема быть решена на стороне сервера.

Ошибки сервера (коды состояния HTTP с 500 по 599), напротив, возникают тогда, когда сервер знает, что произошла ошибка, или не может обработать запрос.

Общие способы устранения неполадок

Независимо от ошибки, вот несколько общих советов по устранению неполадок, которые следует проверить в первую очередь при возникновении любого кода ошибки HTTP:

  • При использовании веб-браузера для тестирования сервера рекомендуется обновлять страницу в браузере после внесения любых изменений на сервере.

  • Лог-файлы сервера содержат подробную информацию о том, как сервер обрабатывает запросы. Например, популярные веб-серверы, такие как Apache и Nginx, создают файлы access.log и error.log. Проверка этих логов может дать полезную информацию.

  • Коды ошибок HTTP являются частью стандарта. Программы реализуют этот стандарт в зависимости от того, как они обрабатывают запросы. Это означает, что определенный код состояния возвращается в зависимости от того, как программное обеспечение сервера обрабатывает конкретную ошибку.

Это руководство должно послужить полезным ориентиром для выяснения источника проблемы.

Распространенные ошибки HTTP

  1. Распространенные ошибки клиента

error 400

Код ошибки 400 указывает на неверный запрос (Bad Request). Он означает, что HTTP-запрос, отправленный на сервер, содержит неверный синтаксис. Давайте рассмотрим возможные источники неверного синтаксиса:

  • Файлы cookie, связанные с сайтом, могут быть повреждены. Очистка файлов cookie и кэша браузера может решить эту проблему.

  • Веб-браузер, отправляющий запрос, может работать со сбоями или содержать ошибки.

  • Это может быть неверный запрос из-за ошибки при ручном формировании HTTP-запросов, например, из-за неправильного использования curl.

error code 401

Код ошибки 401 (Unauthorized) возникает, когда запрос пытается получить доступ к ресурсам, которые не были аутентифицированы или были аутентифицированы неправильно. Чтобы решить эту проблему, пользователь должен предоставить необходимые учетные данные для доступа к защищенному ресурсу.

Примером может служить ситуация, когда пользователь пытается получить доступ к ресурсу, защищенному HTTP-аутентификацией. В такой ситуации пользователь получит код ошибки 401, если не будут предоставлены действительные имя пользователя и пароль.

error 403

Код ошибки 403 (Forbidden) относится к ситуации, когда запрос пользователя корректен, но сервер отказывается его обслуживать. Это может быть связано с отсутствием прав на доступ к запрашиваемому ресурсу. Существует несколько сценариев, которые могут привести к этой проблеме:

  • Права доступа к файлам: если у сервера нет достаточных прав для доступа к запрошенному файлу, это может привести к ошибке 403. Возможные решения включают проверку того, что сервер пытается получить доступ к индексному файлу веб-сервера, рабочий процесс принадлежит www-data пользователю, а индексный файл находится в правильном месте (в случае Nginx это /usr/share/nginx/html/index.html).

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

  • Файл не существует: если запрос пытается получить доступ к каталогу, в котором нет индексного файла по умолчанию, а просмотр содержимого каталога отключен, сервер вернет ошибку 403. В такой ситуации возможное решение заключается в изменении конфигурации сервера для разрешения просмотра содержимого каталогов.

error 404

Код ошибки 404 (Not Found) означает, что пользователь смог успешно подключиться к веб-серверу, но не смог найти запрошенный ресурс. Эта ошибка может возникать в ряде ситуаций. Вот некоторые возможные действия по устранению неполадок:

  • Проверьте наличие возможных опечаток в ссылке, которая перенаправила пользователя к ресурсу сервера.

  • Пользователь мог неправильно ввести URL-адрес. Проверьте, так ли это, и при необходимости исправьте его.

  • Проверьте существование файла на сервере. Был ли он перемещен или удален с сервера?

  • Сервер может быть настроен с неверным корневым каталогом документов (document root). Проверьте это и исправьте при необходимости.

  • Есть ли у рабочего процесса веб-сервера, принадлежащего пользователю, права на доступ к запрошенному файлу? Обратите внимание, что для доступа к каталогу требуются права как на чтение, так и на выполнение.

  • Является ли ресурс символической ссылкой? В этом случае сервер должен быть настроен для перехода по символическим ссылкам.

  1. Общие ошибки сервера

error code 500

Код ошибки 500 (Internal Server Error) возникает, когда сервер не может обработать запрос по неизвестным причинам. В некоторых ситуациях сервер возвращает ошибку 500, когда более уместен конкретный код ошибки 5xx.

Одной из наиболее распространенных причин ошибки 500 является неправильная конфигурация сервера, например, некорректный .htaccess файл. Она также может возникнуть при отсутствии необходимых пакетов, например, при попытке выполнить PHP-код без установленного в системе PHP.

error code 502

Код ошибки 502 (Bad Gateway) указывает на то, что сервер является прокси-сервером или шлюзом и не может получить корректный ответ от бэкенд-сервера (который непосредственно отвечает за выполнение запроса). Если сервер является обратным прокси-сервером, например, балансировщиком нагрузки, необходимо проверить несколько моментов:

  • Бэкенд-серверы работают исправно.

  • Обратный прокси-сервер настроен правильно (с корректными спецификациями бэкенда).

  • Соединение между обратным прокси-сервером и бэкенд-сервером работает нормально. Если серверы могут взаимодействовать через разные порты, брандмауэр должен разрешать подключение к этим портам.

  • Если веб-приложение настроено на использование сокета, убедитесь, что сокет существует в правильном месте и имеет надлежащие права доступа.

error code 503

Код ошибки 503 (Service Unavailable) означает, что сервер перегружен или в данный момент находится на техническом обслуживании. Это предполагает, что через некоторое время сервер снова станет доступен.

Если сервер не находится на обслуживании, это указывает на то, что у него недостаточно аппаратных ресурсов (вычислительной мощности, памяти и т. д.) для обработки входящих запросов. В таком случае сервер следует настроить на обслуживание большего числа пользователей или выделить больше ресурсов.

Код ошибки 504 (Gateway Timeout) сообщает, что сервер является прокси-сервером или шлюзом и не получил ответ от бэкенда в течение допустимого интервала времени. Существует несколько ситуаций, которые могут привести к этой проблеме:

  • Плохое сетевое соединение между серверами.

  • Бэкенд-сервер работает слишком медленно (из-за проблем с производительностью).

  • Лимит времени ожидания (timeout) на шлюзе/прокси-сервере слишком мал.

Заключение

В этом руководстве рассматриваются коды ошибок HTTP, особенно некоторые из наиболее распространенных. В нем описывается, что означают эти коды, и даются рекомендации по возможному устранению неполадок. Обладая этими знаниями, вы получаете прочную основу для решения проблем с вашими веб-серверами или приложениями.

Это лишь краткий список наиболее популярных кодов состояния HTTP. Для получения исчерпывающего списка всех кодов состояния HTTP, ознакомьтесь с кодами состояния HTTP в Wikipedia. Вы также можете ознакомиться с нашим руководством по Nginx HTTP-проксирование, балансировка нагрузки, буферизация и кэширование: обзор.

Приятной работы!

author

Pranay Kapgate

Автор · CloudSigma

Preslav Dobrev — креативный дизайнер в CloudSigma, сосредоточенный на формировании последовательного корпоративного образа с помощью традиционных и инновационных маркетинговых каналов. Он умело сочетает художественное видение со стратегическим маркетингом, создавая убедительные истории бренда.

Комментарии

Комментариев пока нет. Будьте первым.