Симптом
Клиентское приложение получает код состояния HTTP 500вместе с сообщением Internal Server Errorв качестве ответа на вызовы API.
Код состояния HTTP 500— это общий ответ об ошибке. Это означает, что сервер столкнулся с непредвиденной ситуацией, которая не позволила ему выполнить запрос. Эта ошибка обычно возвращается сервером, когда никакой другой код ошибки не подходит.
Сообщения об ошибках
Клиентское приложение получает следующий код ответа:
HTTP/1.1 500 Internal Server Error
Кроме того, вы можете увидеть сообщение об ошибке, подобное показанному ниже:
Пример ответа внутреннего сервера №1
{"errorMessage":"Sorry either your e-mail or password didn't match.", "errorParameters":"{}", "errorCode":"500", "errorKey":"INVALID_EMAILPASSWORD"}
Примечание. Приведенный выше код ответа и сообщение об ошибке являются лишь примерами представлений, которые могут быть возвращены внутренним сервером. В некоторых случаях вы можете получить только код ответа без сообщения об ошибке. Формат и содержимое кода ответа и сообщения об ошибке могут различаться в зависимости от реализации внутреннего сервера.
Возможные причины
Может 500 Internal Server Errorбыть возвращен внутренним сервером по ряду причин. В этом пособии объясняется, как устранять неполадки с помощью стандартных шагов и устранять эту ошибку независимо от ее причины.
Возможные причины этой проблемы следующие:
Общие этапы диагностики
Используйте один из следующих инструментов/методов для диагностики этой ошибки:
Процедура № 1: Использование API-мониторинга
Примечание . Инструкции в этом разделе применимы только к пользователям общедоступного облака.
Чтобы диагностировать ошибку с помощью мониторинга API:
- Войдите в пользовательский интерфейс Apigee Edge как пользователь с соответствующей ролью .
- Переключитесь на организацию, в которой вы хотите исследовать проблему.

- Перейдите на страницу « Анализ» > «Мониторинг API» > «Исследовать ».
- Выберите конкретный период времени, в котором вы наблюдали ошибки.
- Постройте график кода неисправности в зависимости от времени .
Примечание. Вы также можете построить график зависимости кода состояния от времени .
- Выберите ячейку с кодом неисправности
messaging.adaptors.http.flow.ErrorResponseCode, как показано ниже:
- Информация о коде неисправности
messaging.adaptors.http.flow.ErrorResponseCodeотображается, как показано ниже:
- Щелкните Просмотреть журналы и разверните строку неудачного запроса.
( просмотреть увеличенное изображение )

- В окне « Журналы » обратите внимание на следующие сведения:
- Идентификатор сообщения запроса
- Код состояния:
500 - Источник неисправности:
target - Код неисправности:
messaging.adaptors.http.flow.ErrorResponseCode
Причина: ошибка внутреннего сервера.
Диагноз
Ответ 500 Internal Server Errorвнутреннего сервера может быть вызван рядом причин. Вам нужно будет диагностировать каждую ситуацию самостоятельно.
- Определите код ошибки, источник ошибки для ошибки, обнаруженной с помощью мониторинга API, инструмента трассировки или журналов доступа NGINX, как описано в разделе Общие этапы диагностики .
- Если Источник ошибки
targetи Код ошибки ,messaging.adaptors.http.flow.ErrorResponseCodeэто означает, что ошибка возвращена внутренним сервером. - Вы можете использовать один из следующих шагов для диагностики причины проблемы:
Использование трассировки:
Если у вас есть сеанс трассировки сбоя, выполните следующие действия:
- В трассировке выберите неудавшийся запрос API с
500 Internal Server Error. - Выберите ответ, полученный от фазы целевого сервера, из неудачного запроса API, как показано на рисунке ниже:
( просмотреть увеличенное изображение )

- Прокрутите вниз до раздела « Сведения о фазе » и проверьте содержимое ответа, которое содержит ответ от внутреннего сервера.
Пример содержания ответа:
<Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <Body> <Error> <code>500</code> <message xml:lang="en-US">Not Authorised(e4138fa0-ec57).</message> </Error> </Body> </Envelope>
В приведенном выше ответе обратите внимание, что сообщение об ошибке от внутреннего сервера не авторизовано. Это указывает на то, что пользователь мог передать неверные учетные данные, и поэтому он получает эту ошибку.
Примечание:
- Содержимое ответа будет видно в трассировке, только если внутренний сервер отправит тело ответа/полезную нагрузку, содержащую сообщение об ошибке.
- В некоторых случаях внутренний сервер может не отправлять сообщения об ошибках как часть
500 Internal Server Errorответа. В таких случаях вам необходимо работать с командой вашего внутреннего сервера для дальнейшего изучения этой проблемы.
- В трассировке выберите неудавшийся запрос API с
- Проверьте, не используете ли вы цепочку прокси -серверов в конкретной целевой конечной точке неисправного прокси-сервера API; то есть, если целевой сервер/целевая конечная точка вызывает другой прокси в Apigee Edge. Чтобы определить это:
- Если у вас есть трассировка неудачного запроса, перейдите к фазе « Запрос, отправленный на целевой сервер » и нажмите « Показать Curl» .

- Откроется окно Curl for Request Sent to Target Server , из которого можно определить псевдоним хоста целевого сервера.
- Просмотрите целевую конечную точку вашего API-прокси и проверьте, указывает ли URL-адрес внутреннего сервера или имя хоста на целевом сервере на другой прокси или ваш собственный внутренний сервер.
- Если псевдоним хоста целевого сервера указывает на псевдоним виртуального хоста, то это цепочка прокси. В этом случае вам нужно повторить все вышеперечисленные шаги для связанного прокси-сервера, пока вы не определите, что на самом деле вызывает ошибку
500 Internal Server Error. В этих случаях500 Internal Server Errorмогут возникать и другие связанные прокси-серверы на других этапах, которые можно диагностировать и устранить с помощью инструкций, приведенных в этом руководстве или в руководстве 500 Internal Server Error . - Если псевдоним хоста целевого сервера указывает на ваш внутренний сервер, перейдите к разделу « Решение » .
- Если у вас есть трассировка неудачного запроса, перейдите к фазе « Запрос, отправленный на целевой сервер » и нажмите « Показать Curl» .
Разрешение
Если установлено, что 500ошибка исходит от внутреннего сервера, поработайте с командой вашего внутреннего сервера, чтобы устранить проблему надлежащим образом.
В приведенном выше примере вам может потребоваться запросить у пользователей действительные учетные данные, чтобы решить эту проблему.
Ключевые моменты, на которые следует обратить внимание
- Фактическое сообщение об ошибке, возвращенное внутренним сервером для
500 Internal Server Error, можно просмотреть, только если вы захватили сеанс трассировки для неудачных запросов. - Ответ внутреннего сервера не будет регистрироваться в мониторинге API, журналах доступа NGINX или журналах процессора сообщений по соображениям безопасности.
- Вы можете просмотреть журналы внутреннего сервера или включить режим отладки на внутреннем сервере, чтобы получить дополнительные сведения об
500 Internal Server Errorошибке и/или просмотреть сообщение об ошибке, возвращаемое внутренним сервером.
Необходимо собрать диагностическую информацию
Если проблема не устранена даже после выполнения приведенных выше инструкций, соберите следующую диагностическую информацию и обратитесь в службу поддержки Apigee Edge .
Если вы являетесь пользователем общедоступного облака , предоставьте следующую информацию:
- Название организации
- Имя среды
- Имя API-прокси
- Полная
curlкоманда для воспроизведения500ошибки - Файл трассировки, содержащий запросы с
500 Internal Server Error - Если
500ошибки не возникают в настоящее время, укажите период времени с информацией о часовом поясе, когда500ошибки возникали в прошлом.
Если вы являетесь пользователем частного облака , предоставьте следующую информацию:
- Полное сообщение об ошибке, наблюдаемое для неудачных запросов
- Организация, имя среды и имя прокси-сервера API, для которых вы наблюдаете
500ошибки - Пакет API-прокси
- Файл трассировки, содержащий запросы с
500 Internal Server Error - Журналы доступа NGINX
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_logГде: ORG,ENV, а такжеPORT# заменяются фактическими значениями. - Системные журналы процессора сообщений
/opt/apigee/var/log/edge-message-processor/logs/system.log - Период времени с информацией о часовом поясе, когда
500произошли ошибки.













