Gestisci i comportamenti di richiesta e risposta per le distribuzioni Lightsail - Amazon Lightsail

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

Gestisci i comportamenti di richiesta e risposta per le distribuzioni Lightsail

In questa guida, descriviamo il comportamento della tua distribuzione Amazon Lightsail durante l'elaborazione e l'inoltro delle richieste all'origine e l'elaborazione delle risposte dalla tua origine. Per ulteriori informazioni sulle distribuzioni, consulta Distribuzioni della rete per la distribuzione di contenuti.

Argomenti

Come la distribuzione elabora e inoltra richieste all'origine

Questa sezione contiene informazioni su come la distribuzione elabora le richieste dei visualizzatori e le inoltra all'origine.

Indice

Autenticazione

Per le richieste DELETE, GET, HEAD, PATCH, POST e PUT, se configuri la distribuzione per inoltrare l'intestazione Authorization all'origine, puoi configurare il tuo server di origine per richiedere l'autenticazione del client.

Per le richieste OPTIONS, puoi configurare il server di origine per richiedere l'autenticazione del client solo se utilizzi le seguenti impostazioni di distribuzione:

  • Configura la distribuzione per inoltrare l'intestazione Authorization alla tua origine.

  • Configura la distribuzione per non memorizzare nella cache la risposta alle richieste OPTIONS.

Puoi configurare la distribuzione per inoltrare le richieste alla tua origine utilizzando HTTP o HTTPS.

Durata di memorizzazione nella cache

Per controllare per quanto tempo i tuoi oggetti rimangono nella cache della distribuzione prima che la distribuzione inoltri un'altra richiesta all'origine, puoi:

  • Configurare la tua origine per aggiungere un'intestazione Cache-Control o un campo di intestazione Expires a ogni oggetto.

  • Utilizza il valore di default di 1 giorno per la durata della cache (TTL).

Per ulteriori informazioni, consulta distribution advanced settings.

Indirizzi IP client

Se un visualizzatore invia una richiesta alla distribuzione e non include un'intestazione di richiesta X-Forwarded-For, la distribuzione ottiene l'indirizzo IP del visualizzatore dalla connessione TCP, aggiunge un'intestazione X-Forwarded-For che include l'indirizzo IP e inoltra la richiesta all'origine. Ad esempio, se la distribuzione ottiene l'indirizzo IP 192.0.2.2 dalla connessione TCP, inoltra l'intestazione seguente all'origine:

X-Forwarded-For: 192.0.2.2

Se un visualizzatore invia una richiesta alla distribuzione e include un'intestazione di richiesta X-Forwarded-For, la distribuzione ottiene l'indirizzo IP del visualizzatore dalla connessione TCP, lo aggiunge alla fine dell'intestazione X-Forwarded-For e inoltra la richiesta all'origine. Ad esempio, se la richiesta del visualizzatore include X-Forwarded-For: 192.0.2.4,192.0.2.3 e la distribuzione ottiene l'indirizzo IP 192.0.2.2 dalla connessione TCP, inoltra l'intestazione seguente all'origine:

X-Forwarded-For: 192.0.2.4,192.0.2.3,192.0.2.2

Alcune applicazioni, ad esempio i bilanciatori del carico, i firewall per applicazioni Web, i proxy inversi, i sistemi di prevenzione delle intrusioni e l'API Gateway, aggiungono l'indirizzo IP del server edge della distribuzione che ha inoltrato la richiesta alla fine dell'intestazione X-Forwarded-For. Ad esempio, se la distribuzione include X-Forwarded-For: 192.0.2.2 in una richiesta che inoltra a ELB e se l'indirizzo IP del server edge della distribuzione è 192.0.2.199, la richiesta che la tua istanza riceve contiene l'intestazione seguente:

X-Forwarded-For: 192.0.2.2,192.0.2.199

Nota

L'intestazione X-Forwarded-For contiene indirizzi IPv4 (ad esempio 192.0.2.44) e IPv6 (ad esempio 2001:0db8:85a3:0000:0000:8a2e:0370:7334).

Autenticazione SSL lato client

Le distribuzioni Lightsail non supportano l'autenticazione client con certificati SSL lato client. Se un'origine richiede un certificato lato client, la distribuzione elimina la richiesta.

Compressione

Le distribuzioni Lightsail inoltrano le richieste con i valori di campo e. Accept-Encoding "identity" "gzip"

Richieste condizionali

Quando la distribuzione riceve una richiesta per un oggetto scaduto da una cache edge, inoltra la richiesta all'origine per ottenere la versione più recente dell'oggetto oppure la conferma dall'origine che la cache edge della distribuzione dispone già della versione più recente. Quando l'origine ha inviato l'oggetto alla distribuzione l'ultima volta, ha incluso un valore ETag, un valore LastModified o entrambi nella risposta. Nella nuova richiesta che la distribuzione inoltra alla tua origine, la distribuzione aggiunge uno o entrambi gli elementi seguenti:

  • Un'intestazione If-Match o If-None-Match che contiene il valore ETag per la versione scaduta dell'oggetto.

  • Un'intestazione If-Modified-Since che contiene il valore LastModified per la versione scaduta dell'oggetto.

L'origine utilizza queste informazioni per determinare se l'oggetto è stato aggiornato e, di conseguenza, se deve restituire l'intero oggetto alla distribuzione o solo un codice di stato HTTP 304 (Non modificato).

Cookie

Puoi configurare la distribuzione per inoltrare cookie alla tua origine. Per ulteriori informazioni, consulta distribution advanced settings.

Cross-Origin Resource Sharing (CORS)

Se vuoi che la distribuzione rispetti le impostazioni di condivisione delle risorse multiorigine, configura l'origine per inoltrare l'intestazione Origin alla tua origine.

Crittografia

Puoi richiedere ai visualizzatori di connettersi alla distribuzione tramite HTTPS e richiedere alla distribuzione di inoltrare richieste all'origine utilizzando HTTP o HTTPS.

La distribuzione inoltra richieste HTTPS all'origine utilizzando i protocolli SSLv3, TLSv1.0, TLSv1.1 e TLSv1.2. Le altre versioni di SSL e TLS non sono supportate.

Richieste GET che includono un corpo

Se una richiesta GET di un visualizzatore include un corpo, la distribuzione restituisce un codice di stato HTTP 403 (Accesso negato) al visualizzatore.

Metodi HTTP

Se configuri la distribuzione per permettere tutti i metodi HTTP che supporta, questa accetta le richieste seguenti dai visualizzatori e le inoltra alla tua origine:

  • DELETE

  • GET

  • HEAD

  • OPTIONS

  • PATCH

  • POST

  • PUT

La distribuzione memorizza sempre nella cache le risposte alle richieste GET e HEAD. Puoi anche configurare la distribuzione per memorizzare nella cache le risposte alle richieste OPTIONS. La distribuzione non memorizza nella cache le risposte a richieste che utilizzano gli altri metodi.

Per ulteriori informazioni sulla configurazione relativa all'elaborazione di questi metodi mediante la tua origine, consulta la documentazione relativa alla tua origine.

Importante

Se configuri la distribuzione per accettare e inoltrare all'origine tutti i metodi HTTP che supporta, configura il server di origine per gestire tutti i metodi. Ad esempio, se configuri la distribuzione per accettare e inoltrare questi metodi in quanto desideri utilizzare POST, devi configurare il tuo server di origine per gestire le richieste DELETE in modo appropriato, in modo che i visualizzatori non eliminino le risorse che non sono autorizzati a eliminare. Per ulteriori informazioni, consulta la documentazione relativa al tuo server HTTP.

Intestazioni di richieste HTTP e comportamento della distribuzione

L'elenco seguente contiene le intestazioni di richieste HTTP che puoi inoltrare alla tua origine (con le eccezioni indicate). Per ciascuna intestazione, l'elenco include informazioni sugli elementi seguenti:

  • Supported (Supportato): se puoi configurare la distribuzione allo scopo di memorizzare nella cache gli oggetti in base ai valori di intestazione per quell'intestazione.

    Puoi configurare la distribuzione per memorizzare nella cache gli oggetti in base ai valori nelle intestazioni Date e User-Agent, ma non è consigliabile. Queste intestazioni hanno molti valori possibili e la memorizzazione nella cache in base ai valori causerebbe l'inoltro da parte della distribuzione di molte più richieste al server di origine.

  • Behavior if you not configured (Comportamento se non configurato): il comportamento della distribuzione se non la configuri per inoltrare l'intestazione alla tua origine; in tal caso, la distribuzione memorizza nella cache i tuoi oggetti in base ai valori di intestazione.

  • Header (Intestazione): intestazioni definite da terzi

    Supported (Supportato): sì

    Behavior if not configured (Comportamento se non configurato): la distribuzione inoltra le intestazioni alla tua origine.

  • Header (Intestazione): Accept

    Supported (Supportato): sì

    Behavior if not configured (Comportamento se non configurato): la distribuzione rimuove l'intestazione.

  • Header (Intestazione): Accept-Charset

    Supported (Supportato): sì

    Behavior if not configured (Comportamento se non configurato): la distribuzione rimuove l'intestazione.

  • Header (Intestazione): Accept-Encoding

    Supported (Supportato): sì

    Behavior if not configured (Comportamento se non configurato): se il valore contiene gzip, la distribuzione inoltra Accept-Encoding: gzip alla tua origine. Se il valore non contiene gzip, la distribuzione rimuove il campo di intestazione Accept-Encoding prima di inoltrare la richiesta alla tua origine.

  • Header (Intestazione): Accept-Language

    Supported (Supportato): sì

    Behavior if not configured (Comportamento se non configurato): la distribuzione rimuove l'intestazione.

  • Header (Intestazione): Authorization

    Supported (Supportato): sì

    Behavior if not configured (Comportamento se non configurato):

    • Richieste GET e HEAD : la distribuzione rimuove il campo di intestazione Authorization prima di inoltrare la richiesta alla tua origine.

    • Richieste OPTIONS: la distribuzione rimuove il campo di intestazione Authorization prima di inoltrare la richiesta alla tua origine se configuri la distribuzione per memorizzare nella cache le risposte alle richieste OPTIONS.

      La distribuzione inoltra il campo di intestazione Authorization alla tua origine se non configuri la distribuzione per memorizzare nella cache le risposte alle richieste OPTIONS.

    • Richieste DELETE, PATCH, POST e PUT: la distribuzione non rimuove il campo di intestazione prima di inoltrare la richiesta alla tua origine.

  • Header (Intestazione): Cache-Control

    Supported (Supportato): no

    Behavior if not configured (Comportamento se non configurato): la distribuzione inoltra l'intestazione all'origine.

  • Header (Intestazione): CloudFront-Forwarded-Proto

    Supported (Supportato): sì

    Behavior if not configured (Comportamento se non configurato): la distribuzione non aggiunge l'intestazione prima di inoltrare la richiesta all'origine.

  • Header (Intestazione): CloudFront-Is-Desktop-Viewer

    Supported (Supportato): sì

    Behavior if not configured (Comportamento se non configurato): la distribuzione non aggiunge l'intestazione prima di inoltrare la richiesta all'origine.

  • Header (Intestazione): CloudFront-Is-Mobile-Viewer

    Supported (Supportato): sì

    Behavior if not configured (Comportamento se non configurato): la distribuzione non aggiunge l'intestazione prima di inoltrare la richiesta all'origine.

  • Header (Intestazione): CloudFront-Is-Tablet-Viewer

    Supported (Supportato): sì

    Behavior if not configured (Comportamento se non configurato): la distribuzione non aggiunge l'intestazione prima di inoltrare la richiesta all'origine.

  • Header (Intestazione): CloudFront-Viewer-Country

    Supported (Supportato): sì

    Behavior if not configured (Comportamento se non configurato): la distribuzione non aggiunge l'intestazione prima di inoltrare la richiesta all'origine.

  • Header (Intestazione): Connection

    Supported (Supportato): no

    Behavior if not configured (Comportamento se non configurato): la distribuzione sostituisce questa intestazione con Connection: Keep-Alive prima di inoltrare la richiesta all'origine.

  • Header (Intestazione): Content-Length

    Supported (Supportato): no

    Behavior if not configured (Comportamento se non configurato): la distribuzione inoltra l'intestazione all'origine.

  • Header (Intestazione): Content-MD5

    Supported (Supportato): sì

    Behavior if not configured (Comportamento se non configurato): la distribuzione inoltra l'intestazione all'origine.

  • Header (Intestazione): Content-Type

    Supported (Supportato): sì

    Behavior if not configured (Comportamento se non configurato): la distribuzione inoltra l'intestazione all'origine.

  • Header (Intestazione): Cookie

    Supported (Supportato): no

    Behavior if not configured (Comportamento se non configurato): se configuri la tua distribuzione per inoltrare cookie, essa inoltrerà il campo di intestazione Cookie alla tua origine. In caso contrario, la distribuzione rimuove il campo di intestazione Cookie.

  • Header (Intestazione): Date

    Supported (Supportato): sì, ma non consigliato

    Behavior if not configured (Comportamento se non configurato): la distribuzione inoltra l'intestazione all'origine.

  • Header (Intestazione): Expect

    Supported (Supportato): sì

    Behavior if not configured (Comportamento se non configurato): la distribuzione rimuove l'intestazione.

  • Header (Intestazione): From

    Supported (Supportato): sì

    Behavior if not configured (Comportamento se non configurato): la distribuzione inoltra l'intestazione all'origine.

  • Header (Intestazione): Host

    Supported (Supportato): sì

    Behavior if not configured (Comportamento se non configurato): la tua distribuzione imposta il valore sul nome di dominio dell'origine associata all'oggetto richiesto.

  • Header (Intestazione): If-Match

    Supported (Supportato): sì

    Behavior if not configured (Comportamento se non configurato): la distribuzione inoltra l'intestazione all'origine.

  • Header (Intestazione): If-Modified-Since

    Supported (Supportato): sì

    Behavior if not configured (Comportamento se non configurato): la distribuzione inoltra l'intestazione all'origine.

  • Header (Intestazione): If-None-Match

    Supported (Supportato): sì

    Behavior if not configured (Comportamento se non configurato): la distribuzione inoltra l'intestazione all'origine.

  • Header (Intestazione): If-Range

    Supported (Supportato): sì

    Behavior if not configured (Comportamento se non configurato): la distribuzione inoltra l'intestazione all'origine.

  • Header (Intestazione): If-Unmodified-Since

    Supported (Supportato): sì

    Behavior if not configured (Comportamento se non configurato): la distribuzione inoltra l'intestazione all'origine.

  • Header (Intestazione): Max-Forwards

    Supported (Supportato): no

    Behavior if not configured (Comportamento se non configurato): la distribuzione inoltra l'intestazione all'origine.

  • Header (Intestazione): Origin

    Supported (Supportato): sì

    Behavior if not configured (Comportamento se non configurato): la distribuzione inoltra l'intestazione all'origine.

  • Header (Intestazione): Pragma

    Supported (Supportato): no

    Behavior if not configured (Comportamento se non configurato): la distribuzione inoltra l'intestazione all'origine.

  • Header (Intestazione): Proxy-Authenticate

    Supported (Supportato): no

    Behavior if not configured (Comportamento se non configurato): la distribuzione rimuove l'intestazione.

  • Header (Intestazione): Proxy-Authorization

    Supported (Supportato): no

    Behavior if not configured (Comportamento se non configurato): la distribuzione rimuove l'intestazione.

  • Header (Intestazione): Proxy-Connection

    Supported (Supportato): no

    Behavior if not configured (Comportamento se non configurato): la distribuzione rimuove l'intestazione.

  • Header (Intestazione): Range

    Supported (Supportato): sì, per impostazione predefinita

    Behavior if not configured (Comportamento se non configurato): la distribuzione inoltra l'intestazione all'origine.

  • Header (Intestazione): Referer

    Supported (Supportato): sì

    Behavior if not configured (Comportamento se non configurato): la distribuzione rimuove l'intestazione.

  • Header (Intestazione): Request-Range

    Supported (Supportato): no

    Behavior if not configured (Comportamento se non configurato): la distribuzione inoltra l'intestazione all'origine.

  • Header (Intestazione): TE

    Supported (Supportato): no

    Behavior if not configured (Comportamento se non configurato): la distribuzione rimuove l'intestazione.

  • Header (Intestazione): Trailer

    Supported (Supportato): no

    Behavior if not configured (Comportamento se non configurato): la distribuzione rimuove l'intestazione.

  • Header (Intestazione): Transfer-Encoding

    Supported (Supportato): no

    Behavior if not configured (Comportamento se non configurato): la distribuzione inoltra l'intestazione all'origine.

  • Header (Intestazione): Upgrade

    Supportato: No (ad eccezione delle connessioni) WebSocket

    Comportamento se non configurato: la tua distribuzione rimuove l'intestazione, a meno che tu non abbia stabilito una WebSocket connessione.

  • Header (Intestazione): User-Agent

    Supported (Supportato): sì, ma non consigliato

    Behavior if not configured (Comportamento se non configurato): la tua distribuzione sostituisce il valore di questo campo di intestazione con Amazon CloudFront.

  • Header (Intestazione): Via

    Supported (Supportato): sì

    Behavior if not configured (Comportamento se non configurato): la distribuzione inoltra l'intestazione all'origine.

  • Header (Intestazione): Warning

    Supported (Supportato): sì

    Behavior if not configured (Comportamento se non configurato): la distribuzione inoltra l'intestazione all'origine.

  • Header (Intestazione): X-Amz-Cf-Id

    Supported (Supportato): no

    Behavior if not configured (Comportamento se non configurato): la distribuzione aggiunge l'intestazione alla richiesta del visualizzatore prima di inoltrare la richiesta all'origine. Il valore di intestazione contiene una stringa crittografata che identifica in modo univoco la richiesta.

  • Header (Intestazione): X-Edge-*

    Supported (Supportato): no

    Behavior if not configured (Comportamento se non configurato): la distribuzione rimuove tutte le intestazioni X-Edge-*.

  • Header (Intestazione): X-Forwarded-For

    Supported (Supportato): sì

    Behavior if not configured (Comportamento se non configurato): la distribuzione inoltra l'intestazione all'origine.

  • Header (Intestazione): X-Forwarded-Proto

    Supported (Supportato): no

    Behavior if not configured (Comportamento se non configurato): la distribuzione rimuove l'intestazione.

  • Header (Intestazione): X-Real-IP

    Supported (Supportato): no

    Behavior if not configured (Comportamento se non configurato): la distribuzione rimuove l'intestazione.

Versione HTTP

La distribuzione inoltra le richieste alla tua origine personalizzata utilizzando HTTP/1.1.

Lunghezza massima di una richiesta e lunghezza massima di un URL

La lunghezza massima di una richiesta, inclusi il percorso, l'eventuale stringa di query e le intestazioni, è di 20.480 byte.

La tua distribuzione crea un URL dalla richiesta. La lunghezza massima di questo URL è di 8192 byte.

Se una richiesta o un URL supera questi limiti, la distribuzione restituisce al visualizzatore il codice di stato HTTP 413, Request Entity Too Large, e termina la connessione TCP al visualizzatore.

Stapling OCSP

Quando un visualizzatore invia una richiesta HTTPS per un oggetto, la distribuzione o il visualizzatore deve confermare con l'autorità di certificazione (CA) che il certificato SSL per il dominio non è stato revocato. OCSP Stapling accelera la convalida del certificato permettendo alla distribuzione di convalidare il certificato e di memorizzare nella cache la risposta dalla CA. Il client non deve quindi convalidare il certificato direttamente con la CA.

Il miglioramento delle prestazioni di OCSP Stapling è maggiore quando la distribuzione riceve numerose richieste HTTPS per oggetti nello stesso dominio. Ogni server in una posizione edge della distribuzione deve inviare una richiesta di convalida distinta. Quando la distribuzione riceve numerose richieste HTTPS per lo stesso dominio, ogni server nella posizione edge ottiene rapidamente una risposta dalla CA che può "spillare" a un pacchetto nell'handshake SSL; quando il visualizzatore è sicuro della validità del certificato, la distribuzione può distribuire l'oggetto richiesto. Se la tua distribuzione non riceve molto traffico in una posizione edge, è più probabile che le nuove richieste siano indirizzate a un server che non ha ancora convalidato il certificato con la CA. In tal caso, il visualizzatore esegue separatamente la fase di convalida e il server della distribuzione distribuisce l'oggetto. Il server della distribuzione invia inoltre una richiesta di convalida alla CA; di conseguenza, la volta successiva che riceve una nuova richiesta che include lo stesso nome di dominio, ottiene una risposta di convalida dalla CA.

Connessioni persistenti

Quando la distribuzione ottiene una risposta dalla tua origine, prova a mantenere la connessione per alcuni secondi, nell'eventualità che arrivi un'altra richiesta durante tale periodo. Una connessione permanente consente di risparmiare il tempo necessario a ristabilire la connessione TCP e a eseguire un altro handshake TLS per le richieste successive.

Protocolli

La tua distribuzione inoltra le richieste HTTP o HTTPS al server di origine in base al valore del campo di policy del protocollo Origin nella console Lightsail. Nella console Lightsail, le opzioni sono solo HTTP e solo HTTPS.

Se specifichi HTTP Only (Solo HTTP) o HTTPS Only (Solo HTTPS), la distribuzione inoltra le richieste all'origine utilizzando il protocollo specificato, indipendentemente dal protocollo nella richiesta del visualizzatore.

Importante

Se la distribuzione inoltra una richiesta all'origine utilizzando il protocollo HTTPS e se il server di origine restituisce un certificato non valido o autofirmato, la distribuzione interrompe la connessione TCP.

Stringhe di query

Puoi configurare se la distribuzione inoltra parametri di stringa di query alla tua origine.

Timeout di connessione all'origine e tentativi

Per impostazione predefinita, la distribuzione attende 30 secondi (3 tentativi di 10 secondi ciascuno) prima di restituire una risposta di errore al visualizzatore.

Timeout di risposta dell'origine

Il timeout di risposta origine, noto anche come timeout di lettura origine o timeout di richiesta origine, si applica a entrambi i valori seguenti:

  • Il periodo di tempo, in secondi, per il quale la distribuzione attende una risposta dopo l'inoltro di una richiesta all'origine

  • Il periodo di tempo, in secondi, per il quale la distribuzione attende dopo aver ricevuto un pacchetto di una risposta dall'origine e prima di ricevere il pacchetto successivo.

Il comportamento della distribuzione dipende dal metodo HTTP della richiesta del visualizzatore:

  • Richieste GET e HEAD: se l'origine non risponde o smette di rispondere entro la durata del timeout della risposta, la distribuzione interrompe la connessione. Se il numero di tentativi di connessione all'origine specificato è superiore a 1, la distribuzione prova nuovamente a ottenere una risposta completa. La distribuzione prova fino a 3 volte, come determinato dal valore dell'impostazione dei tentativi di connessione all'origine. Se l'origine non risponde durante il tentativo finale, la distribuzione non riprova fino a che non riceve un'altra richiesta per il contenuto sulla stessa origine.

  • Richieste DELETE, OPTIONS, PATCH, PUT e POST: se l'origine non risponde entro 30 secondi, la distribuzione interrompe la connessione e non riprova a contattare l'origine. Il client può inoltrare nuovamente la richiesta, se necessario.

Richieste simultanee per lo stesso oggetto (picchi di traffico)

Quando una posizione edge della distribuzione riceve una richiesta per un oggetto e l'oggetto non è attualmente nella cache o è scaduto, la distribuzione invia immediatamente la richiesta alla tua origine. In caso di picchi di traffico (se ulteriori richieste per lo stesso oggetto arrivano alla posizione edge prima che l'origine risponda alla prima richiesta) la distribuzione si interrompe brevemente prima di inoltrare ulteriori richieste per l'oggetto alla tua origine. Di solito, la risposta alla prima richiesta arriva alla posizione edge della distribuzione prima della risposta alle richieste successive. Queste breve pausa contribuisce a ridurre il carico inutile sul tuo server di origine. Se le ulteriori richieste non sono identiche in quanto, ad esempio, hai configurato la distribuzione per eseguire la memorizzazione nella cache in base alle intestazioni di richiesta o ai cookie, la distribuzione inoltra tutte le richieste univoche alla tua origine.

Intestazione User-Agent

Se desideri che la distribuzione memorizzi nella cache differenti versioni degli oggetti in base al dispositivo utilizzato dall'utente per visualizzare il tuo contenuto, è consigliabile configurare la distribuzione in modo che inoltri una o più delle intestazioni seguenti alla tua origine:

  • CloudFront-Is-Desktop-Viewer

  • CloudFront-Is-Mobile-Viewer

  • CloudFront-Is-SmartTV-Viewer

  • CloudFront-Is-Tablet-Viewer

In base al valore dell'intestazione User-Agent, la distribuzione imposta il valore di queste intestazioni su true o false prima di inoltrare la richiesta all'origine. Se il dispositivo ricade in più di una categoria, allora più di un valore potrebbe essere true. Ad esempio, per alcuni dispositivi tablet, la distribuzione potrebbe impostare sia CloudFront-Is-Mobile-Viewer che CloudFront-Is-Tablet-Viewer su true.

Puoi configurare la distribuzione per memorizzare nella cache gli oggetti in base ai valori nell'intestazione User-Agent, ma non è consigliabile. L'intestazione User-Agent presenta numerosi valori possibili e la memorizzazione nella cache in base a questi valori comporterebbe l'inoltro da parte della distribuzione di molte più richieste all'origine.

Se non configuri la distribuzione per memorizzare nella cache gli oggetti in base ai valori dell'intestazione User-Agent, la distribuzione aggiunge un'intestazione User-Agent con il valore seguente prima di inoltrare una richiesta all'origine:

User-Agent = Amazon CloudFront

La distribuzione aggiunge questa intestazione indipendentemente dalla presenza di un'intestazione User-Agent nella richiesta dal visualizzatore. Se la richiesta dal visualizzatore include un'intestazione User-Agent, la distribuzione la rimuove.

Come la distribuzione elabora le risposte dalla tua origine

Questa sezione contiene informazioni su come la distribuzione elabora le risposte dall'origine.

Indice

Risposte 100-Continue

L'origine non può inviare più di una risposta 100-Continue alla distribuzione. Dopo la prima risposta 100-Continue, la distribuzione prevede una risposta HTTP 200 OK. Se l'origine invia un'altra risposta 100-Continue dopo la prima, la distribuzione restituirà un errore.

Caching

  • Accertati che l'origine imposti valori validi e accurati per i campi di intestazione Date e Last-Modified.

  • Se le richieste provenienti da visualizzatori includono i campi di intestazione di richiesta If-Match o If-None-Match, imposta il campo di intestazione di risposta ETag. Se non specifichi un valore ETag, la distribuzione ignora le intestazioni If-Match o If-None-Match successive.

  • La distribuzione in genere rispetta un'intestazione Cache-Control: no-cache nella risposta proveniente dall'origine. Per un'eccezione, consulta Simultaneous requests for the same object (traffic spikes).

Richieste annullate

Se un oggetto non è presente nella cache edge e se un visualizzatore termina una sessione (ad esempio, chiude un browser) dopo che la distribuzione ottiene l'oggetto dall'origine, ma prima di inviare l'oggetto richiesto, la distribuzione non memorizza l'oggetto nella cache della posizione edge.

Negoziazione di contenuto

Se la tua origine restituisce Vary:* nella risposta e se il valore Minimum TTL (TTL minimo) per il comportamento cache corrispondente è 0, la distribuzione memorizza nella cache l'oggetto, ma continua a inoltrare ogni richiesta successiva per l'oggetto all'origine per verificare che la cache contenga la versione più recente dell'oggetto. La distribuzione non include intestazioni condizionali, come If-None-Match o If-Modified-Since. Di conseguenza, la tua origine restituisce l'oggetto alla distribuzione in risposta a ogni richiesta.

Se l'origine viene restituita Vary:* nella risposta e se il valore di TTL minimo per il comportamento della cache corrispondente è un altro valore, CloudFront elabora l'Varyintestazione come descritto nelle intestazioni di risposta HTTP che la distribuzione rimuove o sostituisce.

Cookie

Se abiliti i cookie per un comportamento della cache e l'origine restituisce cookie con un oggetto, la distribuzione memorizza nella cache sia l'oggetto che i cookie. Nota che ciò riduce la capacità di memorizzazione nella cache di un oggetto.

Connessioni TCP interrotte

Se la connessione TCP tra la distribuzione e la tua origine viene interrotta quando l'origine sta restituendo un oggetto alla distribuzione, il comportamento della distribuzione dipende dalla presenza di un'intestazione Content-Length nella risposta:

  • Intestazione Content-Length: la distribuzione restituisce l'oggetto al visualizzatore quando ottiene l'oggetto dalla tua origine. Tuttavia, se il valore dell'intestazione Content-Length non corrisponde alla dimensione dell'oggetto, la distribuzione non memorizza l'oggetto nella cache.

  • Codifica-trasferimento: frammentata: la distribuzione restituisce l'oggetto al visualizzatore quando ottiene l'oggetto dalla tua origine. Tuttavia, se la risposta frammentata non viene completata, la distribuzione non memorizza l'oggetto nella cache.

  • Nessuna intestazione Content-Length: la distribuzione restituisce l'oggetto al visualizzatore e lo memorizza nella cache, ma è possibile che l'oggetto non sia completo. Senza un'intestazione Content-Length, la distribuzione non può determinare se la connessione TCP è stata interrotta per errore o intenzionalmente.

È consigliabile configurare il server HTTP per aggiungere un'intestazione Content-Length allo scopo di impedire alla distribuzione di memorizzare oggetti parziali nella cache.

Intestazioni di risposta HTTP che la distribuzione rimuove o sostituisce

La distribuzione rimuove o aggiorna i seguenti campi di intestazione prima di inoltrare la risposta dalla tua origine al visualizzatore:

  • Set-Cookie: se configuri la distribuzione per inoltrare cookie, essa inoltrerà il campo di intestazione Set-Cookie ai client.

  • Trailer

  • Transfer-Encoding: se la tua origine restituisce questo campo di intestazione, la distribuzione imposta il valore su chunked prima di restituire la risposta al visualizzatore.

  • Upgrade

  • Vary - Tieni presente quanto segue:

    • Se configuri la distribuzione per inoltrare alla tua origine qualsiasi intestazione specifica dei dispositivi (CloudFront-Is-Desktop-Viewer, CloudFront-Is-Mobile-Viewer, CloudFront-Is-SmartTV-Viewer, CloudFront-Is-Tablet-Viewer) e configuri l'origine affinché restituisca Vary:User-Agent alla distribuzione, questa restituisce Vary:User-Agent al visualizzatore.

    • Se configuri l'origine per includere Accept-Encoding o Cookie nell'intestazione Vary, la distribuzione include i valori nella risposta al visualizzatore.

    • Se configuri la distribuzione per inoltrare un elenco di intestazioni consentite all'origine e se configuri l'origine per restituire i nomi delle intestazioni alla distribuzione nell'intestazione (ad esempio,Vary:Accept-Charset,Accept-Language), la distribuzione restituisce l'VaryVaryintestazione con quei valori al visualizzatore.

    • Per informazioni su come la distribuzione elabora un valore di * nell'intestazione Vary, vedi Content negotiation.

    • Se configuri l'origine per includere qualsiasi altro valore nell'intestazione Vary, la distribuzione rimuove i valori prima di restituire la risposta al visualizzatore.

  • Via: la distribuzione imposta il valore come riportato di seguito in risposta al visualizzatore:

    Via: http-version alphanumeric-string.cloudfront.net (CloudFront)

    Ad esempio, se il client invia una richiesta su HTTP/1.1, il valore è simile al seguente:

    Via: 1.1 1026589cc7887e7a0dc7827b4example.cloudfront.net (CloudFront)

Dimensione massima dei file

La dimensione massima di un corpo di risposta restituito dalla distribuzione al visualizzatore è di 20 GB. Questa dimensione include risposte di trasferimento in blocchi che non specificano il valore di intestazione Content-Length.

Origine non disponibile

Se il server di origine non è disponibile e la distribuzione riceve una richiesta per un oggetto che si trova nella cache edge ma che è scaduto (ad esempio, perché il periodo di tempo specificato nella direttiva Cache-Control max-age è trascorso), la distribuzione distribuisce la versione scaduta dell'oggetto oppure una pagina di errore personalizzata.

In alcuni casi, un oggetto richiesto raramente viene rimosso e non è più disponibile nella cache edge. La distribuzione non può distribuire un oggetto che è stato rimosso.

Reindirizzamenti

Se modifichi la posizione di un oggetto nel server di origine, puoi configurare il tuo server Web per reindirizzare le richieste alla nuova posizione. Dopo la configurazione del reindirizzamento, la prima volta che un visualizzatore invia una richiesta per l'oggetto, la distribuzione invia la richiesta all'origine e l'origine risponde con un reindirizzamento (ad esempio, 302 Moved Temporarily). La distribuzione memorizza nella cache il reindirizzamento e lo restituisce al visualizzatore. La tua distribuzione non segue il reindirizzamento.

Puoi configurare il server Web per reindirizzare le richieste a una delle seguenti posizioni:

  • Il nuovo URL dell'oggetto sul server di origine. Quando il visualizzatore segue il reindirizzamento al nuovo URL, ignora la distribuzione e accede direttamente all'origine. Di conseguenza, ti consigliamo di non reindirizzare le richieste al nuovo URL dell'oggetto sull'origine.

  • Il nuovo URL della distribuzione per l'oggetto. Quando il visualizzatore invia la richiesta che contiene il nuovo URL della distribuzione, questa ottiene l'oggetto dalla nuova posizione sull'origine, lo memorizza nella cache della posizione edge e lo restituisce al visualizzatore. Le richieste successive per l'oggetto saranno servite dalla edge location. In questo modo, si evita la latenza e il carico associati ai visualizzatori che richiedono l'oggetto dall'origine. Tuttavia, ogni nuova richiesta per l'oggetto comporta costi per due richieste alla distribuzione.

Codifica di trasferimento

Le distribuzioni Lightsail supportano solo il valore chunked dell'intestazione. Transfer-Encoding Se l'origine restituisce Transfer-Encoding: chunked, la distribuzione restituisce l'oggetto al client quando l'oggetto arriva nella posizione edge e lo memorizza nella cache in formato frammentato per le richieste successive.

Se il visualizzatore esegue una richiesta Range GET e l'origine restituisce Transfer-Encoding: chunked, la distribuzione restituisce l'intero oggetto al visualizzatore invece dell'intervallo richiesto.

Ti consigliamo di utilizzare la codifica Chunked se la lunghezza del contenuto della tua risposta non può essere predeterminata. Per ulteriori informazioni, consulta Dropped TCP Connections.