HTTPQUERY
Русский

500 Internal Server Error

Применение

Код состояния 500 Internal Server Error сигнализирует об общем сбое на стороне сервера. Из-за широкого характера этой ошибки конкретная причина зависит от окружения. У веб-сервера возникли проблемы, и администратору сервера нужно принять меры для их устранения.

Эту ошибку часто связывают с проблемой прав доступа к одному или нескольким файлам, с таймаутом скрипта или с повреждением файла .htaccess. Единственное, что известно наверняка, — HTTP-запрос не был выполнен.

Примечание

Для конечного пользователя ошибка 500 не является виной клиента. Единственное, что можно сделать, — подождать и повторить попытку позже либо обратиться к администратору сайта. Большинство ошибок 500 временные и вызваны преходящими условиями вроде исчерпания ресурсов или проблем при развёртывании.

Примечание

Ответ 500, раскрывающий стеки вызовов, запросы к базе данных, пути к файлам или версии фреймворков, выдаёт информацию, полезную атакующим. Продакшен-серверы должны возвращать обобщённую страницу ошибки, а подробности записывать только в журналы на стороне сервера.

Влияние на SEO

Googlebot воспринимает ошибки 5xx как сигнал временно снизить скорость сканирования всего сайта. Ранее проиндексированные URL поначалу сохраняются, но длительная недоступность приводит к их удалению из индекса. Любое содержимое, возвращённое с ответом 500, игнорируется. В этом отношении Google обрабатывает 500, 502 и 503 одинаково. Ошибка 5xx на файле robots.txt куда серьёзнее, даже если все остальные страницы сайта возвращают 200. Google приостанавливает сканирование на срок до 12 часов, затем до 30 дней опирается на кэшированную копию. Если ошибка сохраняется, Google полностью исключает сайт из индекса. Bingbot также расценивает ответы 5xx как сбои сканирования. Устойчивые ошибки 5xx препятствуют индексации в Bing.

Пример

Клиент запрашивает ресурс, и сервер отвечает кодом состояния 500 Internal Server Error, указывая, что запрос не будет выполнен.

Запрос

GET /news.html HTTP/1.1
Host: example.com

Ответ

HTTP/1.1 500 Internal Server Error
Content-Type: text/html; charset=UTF-8
Content-Length: 139

<html>
  <head>
    <title>Request Failed</title>
  </head>
  <body>
    <p>The request failed due to a server error.</p>
  </body>
</html>

Как исправить

Начните с журнала ошибок. В nginx проверьте /var/log/nginx/error.log. В Apache проверьте /var/log/apache2/error.log или /var/log/httpd/error_log. Запись в журнале почти всегда называет сбойный файл и номер строки.

Частые первопричины и способы их устранения:

После выявления причины разверните исправление и следите за журналом ошибок на предмет повторений. Настройте оповещения по журналам, чтобы замечать всплески ошибок 500 раньше, чем о них сообщат пользователи.

Примеры кода

.NET

HttpStatusCode.InternalServerError

Rust

http::StatusCode::INTERNAL_SERVER_ERROR

Rails

:internal_server_error

Go

http.StatusInternalServerError

Symfony

Response::HTTP_INTERNAL_SERVER_ERROR

Python3.5+

http.HTTPStatus.INTERNAL_SERVER_ERROR

Java

java.net.HttpURLConnection.HTTP_INTERNAL_ERROR

Apache HttpComponents Core

org.apache.hc.core5.http.HttpStatus.SC_SERVER_ERROR
org.apache.hc.core5.http.HttpStatus.SC_INTERNAL_SERVER_ERROR

Angular

@angular/common/http/HttpStatusCode.InternalServerError