Come posso risolvere gli errori 504 in CloudFront?

4 minuti di lettura
0

Sto utilizzando una distribuzione di Amazon CloudFront per fornire contenuti. Tuttavia, i visualizzatori ricevono un errore 504 quando provano ad accedere al contenuto tramite un browser Web. Come posso risolvere questi errori?

Breve descrizione

CloudFront restituisce due tipi di errori 504:

  • 504: gli errori di "timeout gateway" si verificano quando l'errore viene restituito dall'origine e quindi passa attraverso CloudFront al visualizzatore.
  • 504: gli errori "Impossibile soddisfare la richiesta" si verificano quando l'origine non ha risposto a CloudFront nel periodo di tempo assegnato e quindi la richiesta è scaduta.

A seconda del messaggio di errore ricevuto, consulta la relativa sezione contenente la risoluzione.

Risoluzione

504: errore "Timeout gateway"

Verifica che le porte corrette siano aperte sul tuo gruppo di sicurezza.

Assicurati che il server di origine consenta il traffico in entrata da CloudFront, in genere sulla porta 443 o 80.

Se la tua origine utilizza Elastic Load Balancing, rivedi i gruppi di sicurezza ELB. Assicurati che i gruppi di sicurezza consentano il traffico in entrata da CloudFront.

Verifica che il firewall del server di origine consenta le connessioni da CloudFront

A seconda del sistema operativo, verifica che il firewall consenta il traffico per le porte 443 e 80.

Se stai usando Redhat Linux View, verifica che le regole del firewall corrispondano alle seguenti impostazioni.

Regole firewall:

$ sudo firewall-cmd --permanent --zone=public --list-ports

Aggiungi regole in modo permanente:

$ sudo firewall-cmd --permanent --zone=public --add-port=80/tcp       
$ sudo firewall-cmd --permanent --zone=public --add-port=443/tcp

Se utilizzi Ubuntu Linux, verifica che le regole del firewall corrispondano alle seguenti impostazioni.

Regole firewall di Ubuntu Linux View:

$ sudo ufw status verbose

Aggiungi regole in modo permanente:

$ sudo ufw allow 80
$ sudo ufw allow 443

Se utilizzi Windows Firewall su un server Windows, consulta Aggiunta o modifica di una regola firewall nella documentazione di Microsoft.

Assicurati che il tuo server personalizzato sia accessibile su Internet

Se CloudFront non è in grado di accedere all'origine tramite Internet, CloudFront restituisce un errore 504. Per verificare che il traffico Internet possa connettersi alla tua origine, controlla che le tue regole HTTP e HTTPS corrispondano alle seguenti impostazioni.

Per il traffico HTTPS:

nc -zv OriginDomainName/IP_Address 443
telnet OriginDomainName/IP_Address 443

Per il traffico HTTP:

nc -zv OriginDomainName 80
telnet OriginDomainName 80

504: errore "Impossibile soddisfare la richiesta"

Misura la latenza di carico tipica e ad alto carico della tua applicazione Web

Usa il seguente comando per misurare la reattività della tua applicazione Web:

curl -w "DNS Lookup Time: %{time_namelookup} \nConnect time: %{time_connect} \nTLS Setup: %{time_appconnect} \nRedirect Time: %{time_redirect} \nTime to first byte: %{time_starttransfer} \nTotal time: %{time_total} \n" -o /dev/null https://www.example.com/yourobject

Nota: per https://www.example.com/yourobject, inserisci l'URL dell'applicazione Web che stai testando.

Dovresti visualizzare un output simile al seguente:

DNS Lookup Time: 0.212319   
Connect time: 0.371254   
TLS Setup: 0.544175  
Redirect Time: 0.000000   
Time to first byte: 0.703863   
Total time: 0.703994

A seconda della posizione della richiesta, risolvi il passaggio che mostra una latenza elevata.

Aggiungi risorse o ottimizza server e database

Assicurati che il tuo server disponga di CPU, memoria e spazio su disco sufficienti per gestire le richieste dei visualizzatori.

Configura connessioni persistenti sul tuo server di backend. Queste connessioni aiutano la latenza quando le connessioni devono essere ristabilite per le richieste successive.

Regola il valore di timeout di CloudFront

Se i precedenti passaggi di risoluzione dei problemi non hanno risolto gli errori HTTP 504, aggiorna il tempo specificato nella distribuzione per il timeout della risposta all'origine.


Informazioni correlate

Codice di stato HTTP 504 (Timeout del gateway)

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa