View a markdown version of this page

In che modo CloudFront elabora i codici di stato HTTP 4xx e 5xx dall'origine - Amazon CloudFront

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

In che modo CloudFront elabora i codici di stato HTTP 4xx e 5xx dall'origine

Quando CloudFront richiede un oggetto dal tuo bucket Amazon S3 o dal server di origine personalizzato, l'origine a volte restituisce un codice di stato HTTP 4xx o 5xx, che indica che si è verificato un errore. CloudFront il comportamento dipende da:

  • Se hai configurato le pagine di errore personalizzate.

  • Se hai configurato per quanto tempo desideri memorizzare nella cache le risposte CloudFront agli errori dall'origine (TTL minimo di memorizzazione nella cache degli errori)

  • Il codice di stato

  • Per i codici di stato 5xx, se l'oggetto richiesto è attualmente nella cache perimetrale CloudFront

  • Per alcuni codici di stato 4xx, se il server di origine restituisce un’intestazione Cache-Control max-age o Cache-Control s-maxage.

CloudFront memorizza sempre nella cache le risposte GET e HEAD le richieste. Puoi anche configurare CloudFront la cache delle risposte alle OPTIONS richieste. CloudFront non memorizza nella cache le risposte alle richieste che utilizzano gli altri metodi.

Se l'origine non risponde, la CloudFront richiesta all'origine scade, il che è considerato un errore HTTP 5xx dall'origine, anche se l'origine non ha risposto con quell'errore. In questo scenario, CloudFront continua a pubblicare contenuti memorizzati nella cache. Per ulteriori informazioni, consulta Origine non disponibile.

Se hai abilitato la registrazione, CloudFront scrive i risultati nei log indipendentemente dal codice di stato HTTP.

Per ulteriori informazioni sulle funzionalità e le opzioni relative al messaggio di errore restituito da CloudFront, vedere quanto segue:

Come CloudFront elabora gli errori quando hai configurato pagine di errore personalizzate

Se sono state configurate pagine di errore personalizzate, CloudFront il comportamento dipende dal fatto che l'oggetto richiesto sia presente nella cache perimetrale.

L'oggetto richiesto non è nella cache edge

CloudFront continua a cercare di recuperare l'oggetto richiesto dall'origine quando tutte le seguenti condizioni sono vere:

CloudFront fa quanto segue:
  1. Nella cache CloudFront perimetrale che ha ricevuto la richiesta del visualizzatore, CloudFront controlla la configurazione della distribuzione e ottiene il percorso della pagina di errore personalizzata che corrisponde al codice di stato restituito dall'origine.

  2. CloudFront trova il primo comportamento della cache nella distribuzione che ha uno schema di percorso che corrisponde al percorso della pagina di errore personalizzata.

  3. L' CloudFront edge location invia una richiesta per la pagina di errore personalizzata all'origine specificata nel comportamento della cache.

  4. L'origine restituisce la pagina di errore personalizzata alla edge location.

  5. 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 un massimo dei seguenti valori:

    • 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 o Cache-Control s-maxage restituita dall'origine quando la prima richiesta ha generato l'errore

  6. Trascorso il tempo di memorizzazione nella cache (determinato nel passaggio 5), CloudFront riprova a recuperare l'oggetto richiesto inoltrando un'altra richiesta all'origine. CloudFront continua a riprovare a intervalli specificati dal TTL minimo di errore di memorizzazione nella cache.

Nota

Se hai configurato anche un comportamento della cache per la stessa pagina di errore personalizzata, CloudFront utilizza invece il comportamento della cache TTL. In questo caso, CloudFront eseguirà le seguenti operazioni per i passaggi 5 e 6:

  • Dopo aver CloudFront restituito la pagina di errore personalizzata al visualizzatore che ha effettuato la richiesta, CloudFront verifica il comportamento della cache TTL (ad esempio, si imposta il TTL predefinito su 5 secondi). CloudFront quindi memorizza nella cache la pagina di errore personalizzata fino a quel massimo.

  • Trascorsi 5 secondi, CloudFront recupera nuovamente la pagina di errore personalizzata dall'origine. CloudFront continuerà a riprovare agli intervalli specificati dal comportamento della cache TTL.

Per ulteriori informazioni, consulta Impostazioni TTL del comportamento cache.

L'oggetto richiesto è nella cache edge

CloudFront continua a servire l'oggetto attualmente presente nella cache perimetrale 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:
  1. Se la tua origine restituisce un codice di stato 5xx, CloudFront serve l'oggetto anche se è scaduto. Per tutta la durata dell'errore di memorizzazione nella cache, il TTL minimo CloudFront continua a rispondere alle richieste dei visualizzatori servendo l'oggetto dalla cache perimetrale.

    Se la tua origine restituisce un codice di stato 4xx, CloudFront restituisce il codice di stato, non l'oggetto richiesto, al visualizzatore.

  2. Una volta trascorso l'errore di memorizzazione nella cache del TTL minimo, CloudFront riprova a recuperare l'oggetto richiesto inoltrando un'altra richiesta all'origine. Nota che se l'oggetto non viene richiesto frequentemente, CloudFront potrebbe rimuoverlo dalla cache perimetrale mentre il server di origine continua a restituire risposte 5xx. Per informazioni sulla durata della permanenza degli oggetti nelle cache CloudFront perimetrali, consulta. Gestione della durata di permanenza dei contenuti nella cache (scadenza)

Come CloudFront elabora gli errori se non hai configurato pagine di errore personalizzate

Se non hai configurato pagine di errore personalizzate, CloudFront il comportamento dipende dal fatto che l'oggetto richiesto sia presente nella cache perimetrale.

L'oggetto richiesto non è nella cache edge

CloudFront continua a cercare di recuperare l'oggetto richiesto dall'origine quando tutte le seguenti condizioni sono vere:

CloudFront fa quanto segue:

  1. CloudFront restituisce il codice di stato 4xx o 5xx al visualizzatore e memorizza inoltre nella cache edge il codice di stato che ha ricevuto la richiesta per un massimo dei seguenti valori:

    • 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 o Cache-Control s-maxage restituita dall'origine quando la prima richiesta ha generato l'errore

  2. 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.

  3. Trascorso il tempo di memorizzazione nella cache (determinato nel passaggio 1), CloudFront riprova a recuperare l'oggetto richiesto inoltrando un'altra richiesta all'origine. CloudFront continua a riprovare a intervalli specificati dal TTL minimo di errore di memorizzazione nella cache.

L'oggetto richiesto è nella cache edge

CloudFront continua a servire l'oggetto attualmente presente nella cache perimetrale quando tutte le seguenti condizioni sono vere:

  • Un visualizzatore richiede un oggetto.

  • L'oggetto è nella cache edge ma è scaduto. Ciò significa che l’oggetto è obsoleto.

  • 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:

  1. Se l'origine restituisce un codice di errore 5xx, CloudFront serve l'oggetto anche se è scaduto. Per la durata dell'errore di memorizzazione nella cache, il TTL minimo (10 secondi per impostazione predefinita), CloudFront continua a rispondere alle richieste degli spettatori servendo l'oggetto dalla cache perimetrale.

    Se la tua origine restituisce un codice di stato 4xx, CloudFront restituisce il codice di stato, non l'oggetto richiesto, al visualizzatore.

  2. Una volta trascorso il TTL minimo di errore di memorizzazione nella cache, CloudFront riprova a recuperare l'oggetto richiesto inoltrando un'altra richiesta all'origine. Se l'oggetto non viene richiesto frequentemente, CloudFront potrebbe rimuoverlo dalla cache perimetrale mentre il server di origine continua a restituire risposte 5xx. Per ulteriori informazioni, consulta Gestione della durata di permanenza dei contenuti nella cache (scadenza).

Suggerimento
  • Se configuri la direttiva stale-if-error o Stale-While-Revalidate, puoi specificare per quanto tempo gli oggetti obsoleti sono disponibili nella cache edge. Ciò consente di continuare a offrire contenuti ai visualizzatori anche quando l’origine non è disponibile. Per informazioni, consulta Fornire contenuti obsoleti (scaduti).

  • CloudFront servirà solo un oggetto obsoleto fino al valore TTL massimo specificato. Dopo questo periodo, l’oggetto non sarà più disponibile dalla cache edge.

Codici di stato HTTP 4xx e 5xx che vengono memorizzati nella cache CloudFront

CloudFront memorizza nella cache i codici di stato HTTP 4xx e 5xx restituiti dall'origine, a seconda dello specifico codice di stato restituito e se l'origine restituisce intestazioni specifiche nella risposta.

CloudFront memorizza 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 la pagina di errore personalizzata.

Nota

Se utilizzi la policy della cache CachingDisabled gestita, non CloudFront memorizzerai nella cache questi codici di stato o pagine di errore personalizzate.

404

Non trovato

414

Request-URI Troppo grande

500

Errore interno del server

501

Non ancora disponibile

502

Gateway non valido

503

Servizio non disponibile

504

Gateway Time-out

Codici di stato HTTP 4xx che vengono memorizzati CloudFront nella cache in base alle intestazioni Cache-Control

CloudFront memorizza nella cache i seguenti codici di stato HTTP 4xx restituiti dall'origine solo se l'origine restituisce un'intestazione or. Cache-Control max-age Cache-Control s-maxage Se hai configurato una pagina di errore personalizzata per uno di questi codici di stato HTTP e l'origine restituisce una delle intestazioni di controllo della cache, memorizza nella cache la pagina di errore personalizzata. CloudFront

400

Richiesta non valida

403

Accesso negato

405

Metodo non consentito

412¹

Precondizione non riuscita

415¹

Tipo di supporto non supportato

¹ CloudFront non supporta la creazione di pagine di errore personalizzate per questi codici di stato HTTP.