Media CDN ti consente di specificare intestazioni di richieste e risposte personalizzate.
Le intestazioni personalizzate ti consentono di:
- Restituisce dati geografici sul client, ad esempio paese, regione o città, che puoi utilizzare per mostrare contenuti localizzati.
- Determina se una risposta è stata pubblicata dalla cache (in tutto o in parte) e da quale posizione della cache è stata pubblicata.
- Rimuovi, sostituisci o aggiungi alle intestazioni di richiesta e risposta.
Impostare intestazioni personalizzate
Le intestazioni vengono impostate su ogni percorso, il che ti consente di aggiungere e rimuovere intestazioni per contenuti diversi, come manifest o segmenti video.
Imposta le intestazioni delle richieste personalizzate per route all'inizio del percorso di elaborazione della CDN, prima
delle decisioni di memorizzazione nella cache. Ad esempio, se imposti un'intestazione cache-control
come intestazione personalizzata per route, influisce sul comportamento di memorizzazione nella cache nella CDN.
Per impostazione predefinita, i valori delle intestazioni aggiunti sono separati da virgole e vengono aggiunti alle intestazioni di risposta o di richiesta con gli stessi nomi di campo.
Per sovrascrivere i valori esistenti, imposta replace
su true
.
gcloud e YAML
Per elencare la configurazione YAML per la risorsa EdgeCacheService
, utilizza
il seguente comando:
gcloud edge-cache services describe prod-media-service
La sezione .routing.pathMatchers[].routeRules[].headerAction
mostra
le intestazioni da aggiungere e rimuovere:
routeRules:
- priority: 1
description: "video routes"
matchRules:
- prefixMatch: "/video/"
headerAction:
responseHeadersToAdd:
# Return the country (or region) associated with the client's IP address.
- headerName: "client-geo"
headerValue: "{client_region}"
replace: true
requestHeadersToAdd:
# Inform the upstream origin server the request is from Media CDN
- headerName: "x-downstream-cdn"
headerValue: "Media CDN"
responseHeadersToRemove:
- headerName: "X-User-ID"
- headerName: "X-Other-Internal-Header"
Terraform
Il seguente snippet Terraform mostra una regola di routing con intestazioni personalizzate.
Questo esempio esegue le seguenti operazioni:
- Aggiunge un'intestazione
client-geo
personalizzata alla risposta utilizzando la variabile{client_region}
, che restituisce il paese (o la regione) associato all'indirizzo IP del client. - Aggiunge un'intestazione
x-downstream-cdn
personalizzata alla richiesta utilizzando una stringa statica. - Rimuove due intestazioni interne.
Per configurare intestazioni personalizzate specifiche per l'origine, vedi Configurare le riscritture dell'host o le modifiche delle intestazioni specifiche per l'origine.
Variabili di intestazione dinamiche
Le intestazioni personalizzate possono contenere una o più variabili dinamiche.
Le intestazioni delle richieste che fanno parte dei criteri della chiave della cache (cacheKeyPolicy.includedHeaderNames
)
possono contenere una o più variabili personalizzate. Le intestazioni delle richieste che contengono altre
variabili dinamiche non possono far parte della chiave cache.
Variabile | Descrizione | Supportato per le intestazioni delle richieste | Supportato per le intestazioni delle richieste in una chiave cache | Supportato per le intestazioni delle risposte |
---|---|---|---|---|
cdn_cache_status |
Un elenco separato da virgole delle località (codice IATA dell'aeroporto più vicino) e degli stati di ogni nodo della cache nel percorso richiesta/risposta, in cui il valore più a destra rappresenta la cache più vicina all'utente. | ✔ | ||
client_city |
Il nome della città da cui ha avuto origine la richiesta, ad esempio
Mountain View per Mountain View, California. Non esiste
un elenco canonico di valori validi per questa variabile. I nomi delle città possono
contenere lettere, numeri, spazi e i seguenti caratteri US-ASCII:
!#$%&'*+-.^_`|~ . |
✔ | ✔ | |
client_city_lat_long |
La latitudine e la longitudine della città da cui ha avuto origine la richiesta, ad esempio 37.386051,-122.083851 per una richiesta da Mountain View. |
✔ | ✔ | |
client_region |
Il paese (o la regione) associato all'indirizzo IP del client. Si tratta di un codice regione Unicode CLDR, ad esempio US o FR .
Per la maggior parte dei paesi, questi codici corrispondono direttamente ai
codici ISO-3166-2. |
✔ | ✔ | ✔ |
client_region_subdivision |
La suddivisione, ad esempio la provincia o lo stato, del paese
associato all'indirizzo IP del client. Si tratta di un ID suddivisione CLDR Unicode, ad esempio USCA o CAON . Questi codici Unicode
derivano dalle suddivisioni definite dallo
standard ISO-3166-2. |
✔ | ✔ | ✔ |
client_rtt_msec |
Il tempo di trasmissione di round trip stimato tra la CDN e il client HTTP(S), in millisecondi. Questo è il parametro del tempo di round trip (SRTT) uniforme misurato dallo stack TCP della CDN, in base all'RFC 2988. | ✔ | ✔ | |
device_request_type |
Il tipo di dispositivo utilizzato dal cliente. Questi sono i valori
validi: DESKTOP , MOBILE ,
TABLET , SMART_TV ,
GAME_CONSOLE , WEARABLE ,
e UNDETERMINED . |
✔ | ✔ | |
original_request_id |
L'identificatore univoco assegnato alla richiesta che ha generato
originariamente questa risposta. Compilato solo se è diverso da
request_id per le risposte memorizzate nella cache. |
✔ | ||
origin_name |
La risorsa EdgeCacheOrigin da cui è stato eseguito il proxy della risposta. |
✔ | ||
origin_request_header |
Riflette il valore dell'intestazione Origin nella richiesta per i casi d'uso di condivisione delle risorse tra origini (CORS). | ✔ | ||
proxy_status |
Un elenco di proxy HTTP intermedi nel percorso di risposta. Il valore
è definito
dallo standard RFC 9209.
Una risorsa EdgeCacheService è rappresentata da
Google-Edge-Cache . Se la risposta è stata recuperata dall'origine,
una risorsa EdgeCacheOrigin è rappresentata da Google-Edge-Cache-Origin . |
✔ | ||
tls_sni_hostname |
L'indicazione del nome del server (come definita nella RFC 6066), se fornita dal client durante l'handshake TLS o QUIC. Il nome host viene convertito in lettere minuscole e il punto finale viene rimosso. | ✔ | ✔ | |
tls_version |
La versione TLS negoziata tra il client e il bilanciatore del carico
durante l'handshake SSL. I valori possibili includono TLSv1 ,
TLSv1.1 , TLSv1.2 e
TLSv1.3 . Se il client si connette utilizzando QUIC anziché
TLS, il valore è QUIC. |
✔ | ✔ | |
tls_cipher_suite |
La suite di crittografia negoziata durante il TLS handshake. Il valore è definito
dal registro
delle suite di crittografia TLS IANA, ad esempio
TLS_RSA_WITH_AES_128_GCM_SHA256 . Questo valore è vuoto
per le connessioni client QUIC e non criptate. |
✔ | ✔ | |
user_agent_family |
La famiglia di browser che il client sta utilizzando. Questi sono i valori
validi: APPLE , APPLEWEBKIT ,
BLACKBERRY , DOCOMO , GECKO ,
GOOGLE , KHTML , KOREAN ,
MICROSOFT , MSIE , NOKIA ,
NETFRONT , OBIGO , OPENWAVE ,
OPERA , OTHER , POLARIS ,
TELECA , SEMC , SMIT e
USER_DEFINED . |
✔ | ✔ |
Per le variabili personalizzate valgono le seguenti considerazioni:
Le intestazioni di richiesta e risposta esistenti vengono conservate, ad eccezione delle seguenti, che vengono rimosse:
X-User-IP
- Tutte le intestazioni con
X-Google
oX-GFE
Le chiavi e i valori delle intestazioni devono essere conformi al documento RFC 7230, con forme obsolete non consentite.
Tutte le chiavi di intestazione sono in minuscolo (per HTTP/2).
Alcune intestazioni sono state unite. Quando sono presenti più istanze della stessa chiave di intestazione (ad esempio
Via
), il bilanciatore del carico combina i relativi valori in un unico elenco separato da virgole per una singola chiave di intestazione. Vengono uniti solo gli header i cui valori possono essere rappresentati come un elenco separato da virgole. Altre intestazioni, comeSet-Cookie
, non vengono mai unite.Alcune intestazioni vengono aggiunte o i valori vengono aggiunti. Media CDN aggiunge o modifica sempre determinate intestazioni, ad esempio
X-Forwarded-For
.Media CDN espande qualsiasi intestazione della risposta con una variabile supportata, anche se impostata dal client o dall'origine. In questo modo puoi impostare intestazioni dinamiche dal client (ad esempio un video player) o dall'infrastruttura di origine, oltre a configurare intestazioni personalizzate. Media CDN non espande le variabili nel percorso della richiesta.
Ad esempio, in base alle regole descritte in precedenza, le intestazioni
X-Goog-
eX-Amz-
vengono mantenute e convertite in minuscolo.
Valori dello stato della cache
La variabile di intestazione {cdn_cache_status}
può restituire più valori
corrispondenti al livello di cache che ha fornito la risposta. Tieni presente le
seguenti linee guida per interpretare la variabile di intestazione {cdn_cache_status}
:
- Se l'intestazione contiene
hit
, i contenuti richiesti sono stati recuperati dalla cache. - Se l'intestazione contiene
miss
, i contenuti richiesti non sono stati trovati in un nodo della cache e sono stati recuperati da un nodo upstream. - Se l'intestazione contiene
fetch
, i contenuti richiesti sono stati recuperati dall'origine. Se l'intestazione contiene
uncacheable
, i contenuti richiesti sono stati considerati non memorizzabili nella cache da alcuni o tutti i componenti dell'infrastruttura di memorizzazione nella cache.- Se l'intestazione contiene anche
hit
omiss
, i contenuti richiesti sono stati considerati non memorizzabili nella cache da alcuni componenti di memorizzazione nella cache e memorizzabili nella cache da altri. - Se l'intestazione non contiene anche
hit
omiss
, i contenuti richiesti sono stati considerati non memorizzabili nella cache da tutti i componenti di memorizzazione nella cache e tutte le richieste di questi contenuti vengono recuperate dall'origine. Per assicurarti che i tuoi contenuti vengano memorizzati nella cache in modo appropriato, consulta i requisiti dell'origine di Media CDN.
- Se l'intestazione contiene anche
Intestazioni predefinite
Media CDN aggiunge le seguenti intestazioni di richieste e risposte rispettivamente alle richieste di origine e alle risposte dei client.
Intestazione | Descrizione | Richiesta | Risposta |
---|---|---|---|
x-request-id |
Un identificatore univoco per la richiesta specificata. Questo valore viene aggiunto anche
al log delle richieste come jsonPayload.requestId , il che
ti consente di correlare una richiesta/risposta del client a una voce di log. |
✔ | |
age |
Restituisce l'età dell'oggetto memorizzato nella cache (il numero di secondi in cui è stato nella cache). L'età viene in genere calcolata in base alla data in cui l'oggetto è stato inizialmente memorizzato nella cache in una posizione di cache long tail (shield). Le risposte senza un'intestazione |
✔ | |
server |
È impostato su Google-Edge-Cache . |
✔ | |
cdn-loop |
Identifica i loop, ad esempio quando l'host di origine è lo stesso dell'host rivolto all'utente (edge). Un token di |
✔ | |
forwarded |
La versione strutturata dell'intestazione Queste intestazioni consentono di identificare l'indirizzo IP del client di connessione quando nel percorso è presente un proxy o più proxy. Ad esempio, se un
client con indirizzo IP
Nel caso di più proxy lato client, il client che si è connesso a Media CDN è l'ultimo indirizzo aggiunto nel valore dell'intestazione. |
✔ | |
x-forwarded-for |
La versione non strutturata e standard de facto dell'intestazione
Entrambe le intestazioni vengono inviate in una richiesta per supportare le origini legacy che potrebbero
non conoscere l'intestazione |
✔ |
Le chiavi delle intestazioni sono in minuscolo sia per le intestazioni delle richieste sia per quelle delle risposte perché non fanno distinzione tra maiuscole e minuscole.
È possibile aggiungere altre intestazioni, tra cui la posizione del punto di presenza (PoP) edge e lo stato della cache (ad esempio hit
e miss
), utilizzando le variabili di intestazione dinamiche.