Elaborazione e memorizzazione nella cache di codici di stato HTTP 4xx e 5xx restituiti dall'origine mediante CloudFront
Argomenti
Quando CloudFront richiede un oggetto dal bucket Amazon S3 o dal server di origine personalizzato, la tua origine a volte restituisce un codice di stato HTTP S3 o 4xx a indicare che si è verificato un errore. Il suo comportamento dipende da: Il comportamento di CloudFront dipende dai seguenti punti:
Se hai configurato le pagine di errore personalizzate.
Se hai configurato il periodo di tempo durante il quale CloudFront deve memorizzare nella cache le risposte di errore dalla tua origine (TTL minimo di caching degli errori).
Il codice di stato.
Per i codici di stato 5xx, se l'oggetto richiesto è correntemente nella cache edge di CloudFront.
Per alcuni codici di stato 4xx, se il server di origine restituisce un'intestazione
Cache-Control max-age
oCache-Control s-maxage
.
CloudFront memorizza sempre nella cache le risposte alle richieste GET
e HEAD
. Puoi anche configurare CloudFront per memorizzare nella cache le risposte alle richieste OPTIONS
. CloudFront non memorizza nella cache le risposte alle richieste che utilizzano gli altri metodi.
Se l'origine non risponde, la richiesta CloudFront all'origine scade. Questo è considerato un errore HTTP 5xx dall'origine, anche se l'origine non ha risposto con quell'errore. In questo scenario, CloudFront continua a servire i contenuti memorizzati nella cache. Per ulteriori informazioni, consulta Origine non disponibile.
Se hai attivato la registrazione, CloudFront scrive i risultati nei log indipendentemente dal codice di stato HTTP.
Per ulteriori informazioni sulle caratteristiche e sulle opzioni correlate al messaggio di errore restituito da CloudFront, consulta quanto segue:
Per informazioni sulle impostazioni per le pagine di errore personalizzate nella console di CloudFront, consulta Custom Error Pages and Error Caching (Pagine di errore personalizzate e caching errori).
Per informazioni sul TTL minimo di caching degli errori nella console di CloudFront, consulta Error Caching Minimum TTL (seconds) (TTL minimo caching errori) (secondi).
Per un elenco dei codici di stato HTTP che CloudFront memorizza nella cache, consulta Codici di stato HTTP 4xx e 5xx che CloudFront memorizza nella cache.
Elaborazione di errori con CloudFront quando sono state configurate delle pagine di errore personalizzate
Se hai configurato pagine di errore personalizzate, il comportamento di CloudFront varia a seconda se l'oggetto richiesto è nella cache edge.
L'oggetto richiesto non è nella cache edge
CloudFront continua a cercare di ottenere l'oggetto richiesto dalla tua origine quando tutte le seguenti condizioni sono vere:
Un visualizzatore richiede un oggetto.
L'oggetto non è nella cache edge.
L'origine restituisce un codice di stato HTTP 4xx o 5xx e una delle condizioni seguenti è vera:
Il tuo server di origine restituisce un codice di stato HTTP 5xx anziché un codice di stato 304 (Non modificato) o una versione aggiornata dell'oggetto.
Il tuo server di origine restituisce un codice di stato HTTP 4xx che non è limitato da un'intestazione di controllo cache ed è incluso nell'elenco seguente di codici di stato: Codici di stato HTTP 4xx e 5xx che CloudFront memorizza sempre nella cache.
Il tuo server di origine restituisce un codice di stato HTTP 4xx senza un'intestazione
Cache-Control max-age
o un'intestazioneCache-Control s-maxage
e il codice di stato è incluso nel seguente elenco di codici di stato: Control Codici di stato HTTP 4xx memorizzati da CloudFront nella cache in base alle intestazioni Cache-Control.
CloudFront esegue le seguenti operazioni:
-
Nella cache edge di CloudFront che ha ricevuto la richiesta visualizzatore, CloudFront verifica la configurazione della distribuzione e ottiene il percorso della pagina di errore personalizzata che corrisponde al codice di stato restituito dall'origine.
-
CloudFront trova il primo comportamento cache nella distribuzione che ha un modello di percorso corrispondente al percorso della pagina di errore personalizzata.
-
La edge location di CloudFront invia una richiesta per la pagina di errore personalizzata all'origine specificata nel comportamento cache.
-
L'origine restituisce la pagina di errore personalizzata alla edge location.
-
CloudFront restituisce la pagina di errore personalizzata al visualizzatore che ha effettuato la richiesta e inoltre memorizza nella cache la pagina di errore personalizzata per il massimo dei valori seguenti:
La quantità di tempo specificata dal TTL minimo di caching degli errori (10 secondi per impostazione predefinita)
La quantità di tempo specificata da un'intestazione
Cache-Control max-age
oCache-Control s-maxage
restituita dall'origine quando la prima richiesta ha generato l'errore
-
Una volta trascorso il tempo di caching (determinato nella fase 5), CloudFront tenta di nuovo di ottenere l'oggetto richiesto inoltrando un'altra richiesta alla tua origine. CloudFront continua a riprovare secondo gli intervalli specificati dal TTL minimo di caching degli errori.
L'oggetto richiesto è nella cache edge
CloudFront continua a servire l'oggetto attualmente presente nella cache edge quando tutte le seguenti condizioni sono vere:
Un visualizzatore richiede un oggetto.
L'oggetto è nella cache edge ma è scaduto.
Il tuo server di origine restituisce un codice di stato HTTP 5xx anziché un codice di stato 304 (Non modificato) o una versione aggiornata dell'oggetto.
CloudFront esegue le seguenti operazioni:
-
Se la tua origine restituisce un codice di stato 5xx, CloudFront serve l'oggetto anche se è scaduto. Per la durata del TTL minimo di caching degli errori, CloudFront continua a rispondere alla richieste visualizzatore servendo l'oggetto dalla cache edge.
Se la tua origine restituisce un codice di stato 4xx, CloudFront restituisce il codice di stato, non l'oggetto richiesto, al visualizzatore.
-
Una volta trascorso il TTL minimo di caching degli errori, CloudFront tenta di nuovo di ottenere l'oggetto richiesto inoltrando un'altra richiesta alla tua origine. Nota che se l'oggetto non è richiesto di frequente, CloudFront potrebbe rimuoverlo dalla cache edge mentre il tuo server di origine sta ancora restituendo risposte 5xx. Per informazioni su quanto tempo gli oggetti rimangono nelle cache edge di CloudFront, consulta Gestione della durata di permanenza dei contenuti nella cache (scadenza).
Elaborazione di errori con CloudFront quando non sono state configurate pagine di errore personalizzate
Se non hai configurato pagine di errore personalizzate, il comportamento di CloudFront varia a seconda se l'oggetto richiesto è nella cache edge.
L'oggetto richiesto non è nella cache edge
CloudFront continua a cercare di ottenere l'oggetto richiesto dalla tua origine quando tutte le seguenti condizioni sono vere:
Un visualizzatore richiede un oggetto.
L'oggetto non è nella cache edge.
L'origine restituisce un codice di stato HTTP 4xx o 5xx e una delle condizioni seguenti è vera:
Il tuo server di origine restituisce un codice di stato HTTP 5xx anziché un codice di stato 304 (Non modificato) o una versione aggiornata dell'oggetto.
Il tuo server di origine restituisce un codice di stato HTTP 4xx che non è limitato da un'intestazione di controllo cache ed è incluso nell'elenco seguente di codici di stato: Codici di stato HTTP 4xx e 5xx che CloudFront memorizza sempre nella cache
Il tuo server di origine restituisce un codice di stato HTTP 4xx senza un'intestazione
Cache-Control max-age
o un'intestazioneCache-Control s-maxage
e il codice di stato è incluso nel seguente elenco di codici di stato: Control Codici di stato HTTP 4xx memorizzati da CloudFront nella cache in base alle intestazioni Cache-Control.
CloudFront esegue le seguenti operazioni:
-
CloudFront restituisce il codice di stato 4xx o 5xx al visualizzatore e memorizza inoltre il codice di stato nella cache edge che ha ricevuto la richiesta per il massimo dei valori seguenti:
La quantità di tempo specificata dal TTL minimo di caching degli errori (10 secondi per impostazione predefinita)
La quantità di tempo specificata da un'intestazione
Cache-Control max-age
oCache-Control s-maxage
restituita dall'origine quando la prima richiesta ha generato l'errore
Per la durata del TTL minimo di caching degli errori (determinato nella fase 1), CloudFront risponde alle richieste visualizzatore successive per lo stesso oggetto con il codice di stato 4xx o 5xx memorizzato nella cache.
-
Una volta trascorso il tempo di caching (determinato nella fase 1), CloudFront tenta di nuovo di ottenere l'oggetto richiesto inoltrando un'altra richiesta alla tua origine. CloudFront continua a riprovare secondo gli intervalli specificati dal TTL minimo di caching degli errori.
L'oggetto richiesto è nella cache edge
CloudFront continua a servire l'oggetto attualmente presente nella cache edge quando tutte le seguenti condizioni sono vere:
Un visualizzatore richiede un oggetto.
L'oggetto è nella cache edge ma è scaduto.
Il tuo server di origine restituisce un codice di stato HTTP 5xx anziché un codice di stato 304 (Non modificato) o una versione aggiornata dell'oggetto.
CloudFront esegue le seguenti operazioni:
Se l'origine restituisce un codice di errore 5xx, CloudFront serve l'oggetto anche se è scaduto. Per la durata del TTL minimo di caching degli errori (10 secondi per impostazione predefinita), CloudFront continua a rispondere alla richieste del visualizzatore servendo l'oggetto dalla cache edge.
Se la tua origine restituisce un codice di stato 4xx, CloudFront restituisce il codice di stato, non l'oggetto richiesto, al visualizzatore.
Una volta trascorso il TTL minimo di caching degli errori, CloudFront tenta di nuovo di ottenere l'oggetto richiesto inoltrando un'altra richiesta alla tua origine. Nota che se l'oggetto non è richiesto di frequente, CloudFront potrebbe rimuoverlo dalla cache edge mentre il tuo server di origine sta ancora restituendo risposte 5xx. Per informazioni su quanto tempo gli oggetti rimangono nelle cache edge di CloudFront, consulta Gestione della durata di permanenza dei contenuti nella cache (scadenza).
Codici di stato HTTP 4xx e 5xx che CloudFront memorizza nella cache
CloudFront memorizza nella cache i codici di stato HTTP 4xx e 5xx restituiti dall'origine, a seconda del codice di stato specifico che viene restituito e se l'origine restituisce le intestazioni specifiche nella risposta.
Codici di stato HTTP 4xx e 5xx che CloudFront memorizza sempre nella cache
CloudFront memorizza sempre nella cache i seguenti codici di stato HTTP 4xx e 5xx restituiti dall'origine. Se hai configurato una pagina di errore personalizzata per un codice di stato HTTP, CloudFront memorizza nella cache tale pagina.
404 |
Non trovato |
414 |
URI della richiesta troppo grande |
500 |
Errore interno del server |
501 |
Non ancora disponibile |
502 |
Gateway non valido |
503 |
Servizio non disponibile |
504 |
Timeout gateway |
Codici di stato HTTP 4xx memorizzati da CloudFront nella cache in base alle intestazioni Cache-Control
CloudFront memorizza nella cache solo i seguenti codici di stato HTTP 4xx restituiti dall'origine, se l'origine restituisce un'intestazione Cache-Control max-age
o Cache-Control s-maxage
. Se hai configurato una pagina di errori personalizzata per uno di questi codici di stato HTTP, e l'origine restituisce una delle intestazioni di controllo cache, CloudFront memorizza nella cache la pagina di errori personalizzata.
400 |
Richiesta non valida |
403 |
Accesso negato |
405 |
Metodo non consentito |
412 |
Precondizione non riuscita |
415 |
Tipo di supporto non supportato |