Stai visualizzando la documentazione di Apigee Edge.
Consulta la
documentazione di Apigee X. info
Video
| Video | Descrizione |
|---|---|
| 500 Internal Server Error - caused by backend | Mostra un errore 500 Internal Server Error in tempo reale causato dal server di backend, insieme ai passaggi per risolvere il problema. |
Sintomo
L'applicazione client riceve un codice di stato HTTP 500 con il messaggio
Internal Server Error come risposta alle chiamate API.
Il codice di stato HTTP 500 è una risposta di errore generica. Significa che il server
ha riscontrato una condizione imprevista che gli ha impedito di soddisfare la richiesta. In genere, questo errore viene
restituito dal server quando non è adatto nessun altro codice di errore.
Messaggi di errore
L'applicazione client riceve il seguente codice di risposta:
HTTP/1.1 500 Internal Server Error
Inoltre, potresti visualizzare un messaggio di errore simile a quello mostrato di seguito:
Esempio n. 1
Risposta del server di backend di esempio n. 1
{"errorMessage":"Sorry either your e-mail or password didn't match.",
"errorParameters":"{}",
"errorCode":"500",
"errorKey":"INVALID_EMAILPASSWORD"}Esempio n. 2
Risposta del server di backend di esempio n. 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>
Possibili cause
Il 500 Internal Server Error potrebbe essere restituito dal server di backend per diversi motivi. Questa guida pratica spiega come risolvere questo
errore, indipendentemente dalla causa, utilizzando passaggi comuni.
Di seguito sono riportate le possibili cause di questo problema:
| Causa | Descrizione | Istruzioni per la risoluzione dei problemi applicabili a |
|---|---|---|
| Errore nel server di backend | Il server di backend potrebbe non funzionare per qualche motivo. | Utenti di Edge Private e Public Cloud |
Passaggi comuni per la diagnosi
Utilizza uno dei seguenti strumenti/tecniche per diagnosticare questo errore:
Monitoraggio delle API
Procedura n. 1: utilizzo del monitoraggio delle API
Per diagnosticare l'errore utilizzando il monitoraggio delle API:
- Accedi all'interfaccia utente di Apigee Edge come utente con un ruolo appropriato.
Passa all'organizzazione in cui vuoi esaminare il problema.
- Vai alla pagina Analizza > Monitoraggio delle API > Esamina.
- Seleziona il periodo di tempo specifico in cui hai osservato gli errori.
Traccia il codice di errore rispetto al tempo.
Seleziona una cella con il codice di errore
messaging.adaptors.http.flow.ErrorResponseCodecome mostrato di seguito:
Le informazioni sul codice di errore
messaging.adaptors.http.flow.ErrorResponseCodevengono visualizzate come mostrato di seguito:
Fai clic su Visualizza log ed espandi la riga della richiesta non riuscita.
- Nella finestra Log, prendi nota dei seguenti dettagli:
- ID messaggio richiesta
- Codice di stato:
500 - Origine errore:
target - Codice di errore:
messaging.adaptors.http.flow.ErrorResponseCode
Traccia
Procedura n. 2: utilizzo dello strumento Traccia
Per diagnosticare l'errore utilizzando lo strumento Traccia:
- Attiva la sessione di traccia e
- Attendi che si verifichi l'errore
500 Internal Server Errorcon il codice di erroremessaging.adaptors.http.flow.ErrorResponseCodeoppure - Se riesci a riprodurre il problema, effettua la chiamata API per riprodurre l'errore
500 Internal Server Error
- Attendi che si verifichi l'errore
Assicurati che l'opzione Mostra tutte le informazioni sul flusso sia attivata:

- Seleziona una delle richieste non riuscite ed esamina la traccia.
- Esamina le diverse fasi della traccia e individua il punto in cui si è verificato l'errore.
In genere, l'errore si verifica in un flusso dopo la fase Risposta ricevuta dal server di destinazione come mostrato di seguito:

- Vai alla fase AX (dati di Analytics registrati) nella traccia e fai clic su di essa.
Scorri verso il basso fino alla sezione Intestazioni della risposta Dettagli fase e determina i valori di X-Apigee-fault-code e X-Apigee-fault-source e X-Apigee-Message-ID, come mostrato di seguito:

- Prendi nota dei valori di X-Apigee-fault-code, X-Apigee-fault-source, e X-Apigee-Message-ID:
| Intestazioni della risposta | Valore |
|---|---|
| X-Apigee-fault-code | messaging.adaptors.http.flow.ErrorResponseCode |
| X-Apigee-fault-source | target |
| X-Apigee-Message-ID | MESSAGE_ID |
NGINX
Procedura n. 3: utilizzo dei log degli accessi di NGINX
Per diagnosticare l'errore utilizzando i log degli accessi di NGINX:
- Se sei un utente di Private Cloud, puoi utilizzare i log degli accessi di NGINX per determinare
le informazioni chiave sull'errore HTTP
500 Internal Server Error. Controlla i log degli accessi di NGINX:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log- Cerca se sono presenti errori
500con il codice di erroremessaging.adaptors.http.flow.ErrorResponseCodedurante un periodo di tempo specifico (se il problema si è verificato in passato) o se sono presenti richieste che non vanno a buon fine con500. Se trovi errori
500con X-Apigee-fault-code corrispondente al valore dimessaging.adaptors.http.flow.ErrorResponseCode, allora determina il valore di X-Apigee-fault-source.Esempio di errore 500 dal log degli accessi di NGINX:
La voce di esempio riportata sopra dal log degli accessi di NGINX ha i seguenti valori per X-Apigee-fault-code e X-Apigee-fault-source:
Intestazioni Valore X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCodeX-Apigee-fault-source target
Causa: errore nel server di backend
Diagnosi
L'500 Internal Server Error restituito dal server di backend può essere
causato da diversi motivi. Dovrai diagnosticare ogni situazione in modo indipendente.
- Determina il codice di errore e l'origine dell'errore osservato utilizzando il monitoraggio delle API, lo strumento Traccia o i log degli accessi di NGINX, come spiegato in Passaggi comuni per la diagnosi.
- Se l'origine dell'errore è
targete il codice di errore èmessaging.adaptors.http.flow.ErrorResponseCode, significa che l'errore viene restituito dal server di backend. - Puoi utilizzare uno dei seguenti passaggi per diagnosticare la causa del problema:
Traccia
Utilizzo di Traccia:
Se hai una sessione di traccia per l'errore, segui questi passaggi:
- Nella traccia, seleziona la richiesta API che non è andata a buon fine con
500 Internal Server Error. Seleziona la fase Risposta ricevuta dal server di destinazione dalla richiesta API non riuscita, come mostrato nella figura seguente:
Scorri verso il basso fino alla sezione Dettagli fase e controlla il Contenuto della risposta, che contiene la risposta del server di backend.
Contenuto della risposta di esempio:
<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>
Nella risposta riportata sopra, tieni presente che il messaggio di errore del server di backend è Not Authorised (Non autorizzato). Ciò indica che l'utente potrebbe aver inserito credenziali non valide e per questo motivo riceve questo errore.
Chiama il server di backend
Effettuare una chiamata diretta al server di backend:
Puoi effettuare una chiamata diretta al server di backend e:
- Verificare se ricevi la stessa
500 Internal Server Errorrisposta ricevuta quando la richiesta è stata effettuata tramite Apigee Edge - Controllare il messaggio di errore (risposta) ricevuto dal server di backend
Segui questi passaggi per effettuare la chiamata diretta al server di backend:
- Assicurati di avere tutte le intestazioni, i parametri di query e le credenziali necessarie da passare al server di backend come parte della richiesta.
- Se il servizio di backend è accessibile pubblicamente, puoi utilizzare il
curlcomando, Postman o qualsiasi altro client REST e richiamare direttamente l'API del server di backend. Se il server di backend è accessibile solo dai processori di messaggi, puoi utilizzare il comando
curl, Postman o qualsiasi altro client REST e richiamare direttamente l'API del server di backend dal processore di messaggi.- Verifica se il servizio di backend restituisce effettivamente
500 Internal Server Error, controlla il messaggio di errore (risposta) restituito dal server di backend e determina la causa di questo errore.
Log del server di backend
Utilizzo dei log del server di backend
- Esamina i log del server di backend e prova a ottenere maggiori dettagli sull'errore e sulla sua causa.
- Se possibile, attiva la modalità di debug sul server di backend per ottenere maggiori dettagli sull'errore e la causa.
- Nella traccia, seleziona la richiesta API che non è andata a buon fine con
Verifica se stai utilizzando il concatenamento di proxy nell'endpoint di destinazione specifico del proxy API non riuscito, ovvero se il server di destinazione/endpoint di destinazione richiama un altro proxy in Apigee Edge. Per determinarlo:
Se hai la traccia della richiesta non riuscita, vai alla fase Richiesta inviata al server di destinazione e fai clic su Mostra Curl.
- Si apre la finestra Curl per la richiesta inviata al server di destinazione , da cui puoi determinare l'alias host del server di destinazione.
- Esamina l'endpoint di destinazione del proxy API e verifica se l'URL del server di backend o il nome host nel server di destinazione rimanda a un altro proxy o al tuo server di backend.
- Se l'alias host del server di destinazione rimanda a un alias host virtuale, si tratta di un concatenamento di proxy. In questo caso, devi ripetere tutti i passaggi precedenti per il
proxy concatenato finché non determini la causa effettiva del
500 Internal Server Error. In questi casi,500 Internal Server Errorpuò verificarsi anche in altri proxy concatenati in altre fasi, che possono essere diagnosticati e risolti utilizzando le istruzioni fornite in questa guida pratica o nella guida pratica relativa all'errore 500 Internal Server Error. - Se l'alias host del server di destinazione rimanda al tuo server di backend, vai a Risoluzione.
Risoluzione
Se viene accertato che l'errore 500 proviene dal server di backend, allora
collabora con il team del server di backend per risolvere il problema in modo appropriato.
Nell'esempio discusso sopra, potrebbe essere necessario richiedere agli utenti di inserire credenziali valide per risolvere il problema.
Punti chiave da tenere presenti
- Il messaggio di errore effettivo restituito dal server di backend per
500 Internal Server Errorpuò essere visualizzato solo se hai acquisito la sessione di traccia per le richieste non riuscite. - Per motivi di sicurezza, la risposta del server di backend non verrà registrata nei log del monitoraggio delle API, nei log degli accessi di NGINX o nei log del processore di messaggi.
- Puoi esaminare i log del server di backend o attivare la modalità di debug sul backend per ottenere maggiori
dettagli sull'
500 Internal Server Errore/o visualizzare il messaggio di errore restituito dal server di backend.
Informazioni di diagnostica da raccogliere
Se il problema persiste anche dopo aver seguito le istruzioni riportate sopra, raccogli le seguenti informazioni di diagnostica e contatta l'assistenza di Apigee Edge.
Se sei un utente di Public Cloud, fornisci le seguenti informazioni:
- Nome organizzazione
- Nome ambiente
- Nome proxy API
- Comando
curlcompleto per riprodurre l'errore500 - File di traccia contenente le richieste con l'errore
500 Internal Server Error - Se gli errori
500non si verificano attualmente, fornisci il periodo di tempo con le informazioni sul fuso orario in cui si sono verificati500in passato.
Se sei un utente di Private Cloud, fornisci le seguenti informazioni:
- Messaggio di errore completo osservato per le richieste non riuscite
- Nome dell'organizzazione, dell'ambiente e del proxy API per cui stai osservando
500errori - Bundle del proxy API
- File di traccia contenente le richieste con l'errore
500 Internal Server Error - Log degli accessi di NGINX
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_logDove: ORG, ENV, e PORT# vengono sostituiti con i valori effettivi.
- Log di sistema del processore di messaggi
/opt/apigee/var/log/edge-message-processor/logs/system.log - Il periodo di tempo con le informazioni sul fuso orario in cui si sono verificati gli errori
500.