Estás viendo la documentación de Apigee Edge.
Ir a la
documentación de Apigee X. info
Videos
| Video | Descripción |
|---|---|
| 500 Error interno del servidor: causado por el backend | Muestra un 500 Internal Server Error en tiempo real causado por el servidor de backend, junto con los pasos para solucionar el error. |
Síntoma
La aplicación cliente obtiene un código de estado HTTP 500 con el mensaje
Internal Server Error como respuesta para las llamadas a la API.
El código de estado HTTP 500 es una respuesta de error genérica. Significa que el servidor
encontró una condición inesperada que le impidió cumplir con la solicitud. Por lo general, el servidor devuelve este error
cuando no es adecuado ningún otro código de error.
Mensajes de error
La aplicación cliente obtiene el siguiente código de respuesta:
HTTP/1.1 500 Internal Server Error
Además, es posible que observes un mensaje de error similar al que se muestra a continuación:
Ejemplo 1
Respuesta del servidor de backend de muestra 1
{"errorMessage":"Sorry either your e-mail or password didn't match.",
"errorParameters":"{}",
"errorCode":"500",
"errorKey":"INVALID_EMAILPASSWORD"}Ejemplo 2
Respuesta del servidor de backend de muestra 2
<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>
Causas posibles
El 500 Internal Server Error puede ser devuelto por el servidor de backend debido a un
número de causas. En este manual, se explica cómo solucionar problemas con pasos comunes y resolver este
error, independientemente de su causa.
Las posibles causas de este problema son las siguientes:
| Causa | Descripción | Instrucciones de solución de problemas aplicables para |
|---|---|---|
| Error en el servidor de backend | El servidor de backend puede fallar por algún motivo. | Usuarios de la nube pública y privada de Edge |
Pasos comunes de diagnóstico
Usa una de las siguientes herramientas o técnicas para diagnosticar este error:
Supervisión de API
Procedimiento 1: Uso de la supervisión de API
Para diagnosticar el error con la supervisión de API, haz lo siguiente:
- Accede a la IU de Apigee Edge como usuario con una función adecuada.
Cambia a la organización en la que deseas investigar el problema.
- Navega a la página Analizar > Supervisión de API > Investigar.
- Selecciona el período específico en el que observaste los errores.
Traza el Código de falla en función del Tiempo.
Selecciona una celda que tenga el código de falla
messaging.adaptors.http.flow.ErrorResponseCodecomo se muestra a continuación:( aumentar el tamaño de la imagen)

La información sobre el código de falla
messaging.adaptors.http.flow.ErrorResponseCodese muestra como se indica a continuación:( aumentar el tamaño de la imagen)

Haz clic en Ver registros y expande la fila de la solicitud fallida.
( aumentar el tamaño de la imagen)
- En la ventana Registros, anota los siguientes detalles:
- ID del mensaje de solicitud
- Código de estado:
500 - Fuente de falla:
target - Código de falla:
messaging.adaptors.http.flow.ErrorResponseCode
Trace
Procedimiento 2: Uso de la herramienta Trace
Para diagnosticar el error con la herramienta Trace, haz lo siguiente:
- Habilita la sesión de Trace y haz lo siguiente:
- Espera a que se produzca el error
500 Internal Server Errorcon el código de errormessaging.adaptors.http.flow.ErrorResponseCode. - Si puedes reproducir el problema, realiza la llamada a la API para reproducir el problema
500 Internal Server Error
- Espera a que se produzca el error
Asegúrate de que Mostrar todos los FlowInfos esté habilitado:

- Selecciona una de las solicitudes fallidas y examina el seguimiento.
- Navega por las diferentes fases del seguimiento y ubica dónde se produjo la falla.
Por lo general, encontrarás el error en un flujo después de la fase Respuesta recibida del servidor de destino como se muestra a continuación:
( aumentar el tamaño de la imagen)

- Navega a la fase AX (datos de Analytics registrados) en el seguimiento y haz clic en ella.
Desplázate hacia abajo hasta la sección Encabezados de respuesta de detalles de fase y determina los valores de X-Apigee-fault-code y X-Apigee-fault-source, y X-Apigee-Message-ID como se muestra a continuación:
( aumentar el tamaño de la imagen)

- Anota los valores de X-Apigee-fault-code, X-Apigee-fault-source, y X-Apigee-Message-ID:
| Encabezados de respuesta | Valor |
|---|---|
| X-Apigee-fault-code | messaging.adaptors.http.flow.ErrorResponseCode |
| X-Apigee-fault-source | target |
| X-Apigee-Message-ID | MESSAGE_ID |
NGINX
Procedimiento 3: Uso de los registros de acceso de NGINX
Para diagnosticar el error con los registros de acceso de NGINX, haz lo siguiente:
- Si eres usuario de la nube privada, puedes usar los registros de acceso de NGINX para determinar
la información clave sobre el error HTTP
500 Internal Server Error. Consulta los registros de acceso de NGINX:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log- Busca para ver si hay errores
500con el código de errormessaging.adaptors.http.flow.ErrorResponseCodedurante un período específico (si el problema ocurrió en el pasado) o si aún hay solicitudes que fallan con500. Si encuentras errores
500con el X-Apigee-fault-code que coincida con el valor demessaging.adaptors.http.flow.ErrorResponseCode, entonces determina el valor de X-Apigee-fault-source.Ejemplo de error 500 del registro de acceso de NGINX:
( aumentar el tamaño de la imagen)
La entrada de muestra anterior del registro de acceso de NGINX tiene los siguientes valores para X-Apigee-fault-code y X-Apigee-fault-source:
Encabezados Valor X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCodeX-Apigee-fault-source target
Causa: Error en el servidor de backend
Diagnóstico
El 500 Internal Server Error que responde el servidor de backend puede deberse a varios motivos. Deberás diagnosticar cada situación de forma independiente.
- Determina el código de falla y la fuente de falla del error observado con la supervisión de API, la herramienta Trace o los registros de acceso de NGINX, como se explica en Pasos comunes de diagnóstico.
- Si la fuente de falla es
targety el código de falla esmessaging.adaptors.http.flow.ErrorResponseCode, eso indica que el error lo devuelve el servidor de backend. - Puedes usar uno de los siguientes pasos para diagnosticar la causa del problema:
Trace
Usa Trace:
Si tienes una sesión de Trace para la falla, sigue estos pasos:
- En Trace, selecciona la solicitud a la API que falló con
500 Internal Server Error. Selecciona la fase Respuesta recibida del servidor de destino de la solicitud a la API fallida como se muestra en la siguiente figura:
( aumentar el tamaño de la imagen)
Desplázate hacia abajo hasta la sección Detalles de fase y verifica el Contenido de la respuesta, que contiene la respuesta del servidor de backend.
Contenido de respuesta de muestra:
<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>
En la respuesta anterior, ten en cuenta que el mensaje de error del servidor de backend es No autorizado. Esto indica que es posible que el usuario haya pasado credenciales no válidas y, por lo tanto, reciba este error.
Llama al servidor de backend
Realiza una llamada directa al servidor de backend:
Puedes realizar una llamada directa al servidor de backend y hacer lo siguiente:
- Valida si obtienes la misma
500 Internal Server Errorrespuesta que recibiste cuando se realizó la solicitud a través de Apigee Edge. - Verifica el mensaje de error (respuesta) recibido del servidor de backend.
Realiza los siguientes pasos para realizar la llamada directa al servidor de backend:
- Asegúrate de tener todos los encabezados, los parámetros de consulta y las credenciales necesarios que se deben pasar al servidor de backend como parte de la solicitud.
- Si se puede acceder al servicio de backend de forma pública, puedes usar el
curlcomando, Postman o cualquier otro cliente de REST y, luego, invocar la API del servidor de backend directamente. Si solo se puede acceder al servidor de backend desde los Message Processors, puedes usar el
curlcomando, Postman o cualquier otro cliente de REST y, luego, invocar la API del servidor de backend directamente desde el Message Processor.- Valida si el servicio de backend devuelve
500 Internal Server Errory verifica el mensaje de error (respuesta) que devuelve el servidor de backend, y determina la causa de este error.
Registros del servidor de backend
Usa los registros del servidor de backend
- Revisa los registros del servidor de backend y trata de obtener más detalles sobre el error y su causa.
- Si es posible, habilita el modo de depuración en el servidor de backend para obtener más detalles sobre el error y la causa.
- En Trace, selecciona la solicitud a la API que falló con
Verifica si usas el encadenamiento de proxy en el extremo de destino específico del proxy de API fallido; es decir, si el servidor de destino o el extremo de destino invoca otro proxy en Apigee Edge. Para determinar esto, haz lo siguiente:
Si tienes el seguimiento de la solicitud fallida, navega a la fase Solicitud enviada al servidor de destino y haz clic en Mostrar Curl.
- Se abrirá la ventana Curl para la solicitud enviada al servidor de destino , desde la que puedes determinar el alias de host del servidor de destino.
- Revisa el extremo de destino de tu proxy de API y verifica si la URL del servidor de backend o el nombre de host en el servidor de destino apunta a otro proxy o a tu propio servidor de backend.
- Si el alias de host del servidor de destino apunta a un alias de host virtual, entonces se
trata de encadenamiento de proxy. En este caso, debes repetir todos los pasos anteriores para el
proxy encadenado hasta que determines qué causa realmente el
500 Internal Server Error. En estos casos,500 Internal Server Errortambién puede ocurrir en otros proxies encadenados en otras etapas, que se pueden diagnosticar y resolver con las instrucciones que se indican en este manual o en el manual de 500 Internal Server Error. - Si el alias de host del servidor de destino apunta a tu servidor de backend, ve a Solución.
Solución
Si se determina que el error 500 proviene del servidor de backend, entonces
trabaja con tu equipo del servidor de backend para solucionar el problema de forma adecuada.
En el ejemplo analizado anteriormente, es posible que debas solicitar a los usuarios que pasen credenciales válidas para solucionar este problema.
Consideraciones clave
- El mensaje de error real que devuelve el servidor de backend para
500 Internal Server Errorsolo se puede ver si capturaste la sesión de seguimiento de las solicitudes fallidas. - La respuesta del servidor de backend no se registrará en la supervisión de API, los registros de acceso de NGINX ni Message Processor logs por motivos de seguridad.
- Puedes revisar los registros del servidor de backend o habilitar el modo de depuración en el backend para obtener más
detalles sobre el
500 Internal Server Erroro ver el mensaje de error que devuelve el servidor de backend.
Se debe recopilar información de diagnóstico
Si el problema persiste incluso después de seguir las instrucciones anteriores, recopila la siguiente información de diagnóstico y comunícate con Asistencia de Apigee Edge.
Si eres usuario de la nube pública, proporciona la siguiente información:
- Nombre de la organización
- Nombre del entorno
- Nombre del proxy de API
- Comando
curlcompleto para reproducir el error500 - Archivo de seguimiento que contiene las solicitudes con
500 Internal Server Error - Si los errores
500no ocurren actualmente, proporciona el período con la información de la zona horaria cuando ocurrieron errores500en el pasado.
Si eres usuario de la nube privada, proporciona la siguiente información:
- Mensaje de error completo observado para las solicitudes fallidas
- Organización, nombre del entorno y nombre del proxy de API para los que observas
500errores - Paquete de proxy de API
- Archivo de seguimiento que contiene las solicitudes con
500 Internal Server Error - Registros de acceso de NGINX
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_logDonde: ORG, ENV y PORT# se reemplazan por valores reales.
- Registros del sistema de Message Processor
/opt/apigee/var/log/edge-message-processor/logs/system.log - El período con la información de la zona horaria cuando ocurrieron los errores
500.