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 intestazioneExpires
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
oIf-None-Match
che contiene il valoreETag
per la versione scaduta dell'oggetto. -
Un'intestazione
If-Modified-Since
che contiene il valoreLastModified
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
eUser-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 inoltraAccept-Encoding: gzip
alla tua origine. Se il valore non contienegzip
, la distribuzione rimuove il campo di intestazioneAccept-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
eHEAD
: la distribuzione rimuove il campo di intestazioneAuthorization
prima di inoltrare la richiesta alla tua origine. -
Richieste
OPTIONS
: la distribuzione rimuove il campo di intestazioneAuthorization
prima di inoltrare la richiesta alla tua origine se configuri la distribuzione per memorizzare nella cache le risposte alle richiesteOPTIONS
.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
ePUT
: 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 intestazioneCookie
. -
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
eHEAD
: 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
ePOST
: 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
eLast-Modified
. -
Se le richieste provenienti da visualizzatori includono i campi di intestazione di richiesta
If-Match
oIf-None-Match
, imposta il campo di intestazione di rispostaETag
. Se non specifichi un valoreETag
, la distribuzione ignora le intestazioniIf-Match
oIf-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'Vary
intestazione 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 intestazioneSet-Cookie
ai client. -
Trailer
-
Transfer-Encoding
: se la tua origine restituisce questo campo di intestazione, la distribuzione imposta il valore suchunked
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é restituiscaVary:User-Agent
alla distribuzione, questa restituisceVary:User-Agent
al visualizzatore. -
Se configuri l'origine per includere
Accept-Encoding
oCookie
nell'intestazioneVary
, 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'Vary
Vary
intestazione con quei valori al visualizzatore. -
Per informazioni su come la distribuzione elabora un valore di
*
nell'intestazioneVary
, 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.