Media CDN ti consente di specificare intestazioni della richiesta e della risposta personalizzate.
Le intestazioni personalizzate ti consentono di:
- Restituire dati geografici sul client, come paese, regione o città, che puoi utilizzare per mostrare contenuti localizzati.
- Determinare se una risposta è stata fornita dalla cache (in tutto o in parte) e da quale località della cache.
- Rimuovere, sostituire o aggiungere intestazioni della richiesta e della risposta.
Impostare intestazioni personalizzate
Le intestazioni vengono impostate su ogni route, il che ti consente di aggiungere e rimuovere intestazioni per contenuti diversi, come manifest o segmenti video.
Imposta le intestazioni della richiesta 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 aggiunti alle intestazioni della risposta o della richiesta con gli stessi nomi dei campi.
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 route con intestazioni personalizzate.
Questo esempio esegue le seguenti operazioni:
- Aggiunge un'intestazione personalizzata
client-geoalla risposta utilizzando la variabile{client_region}, che restituisce il paese (o la regione) associato all'indirizzo IP del client. - Aggiunge un'intestazione personalizzata
x-downstream-cdnalla richiesta utilizzando una stringa statica. - Rimuove due intestazioni interne.
Per configurare intestazioni personalizzate specifiche dell'origine, consulta Configurare le modifiche dell'host o delle intestazioni specifiche dell'origine.
Variabili di intestazione dinamiche
Le intestazioni personalizzate possono contenere una o più variabili dinamiche.
Le intestazioni della richiesta che fanno parte della policy della chiave cache (cacheKeyPolicy.includedHeaderNames) possono contenere una o più variabili personalizzate. Le intestazioni della richiesta che contengono altre variabili dinamiche non possono far parte della chiave cache.
| Variabile | Descrizione | Supportato per le intestazioni della richiesta | Supportato per le intestazioni della richiesta in una chiave cache | Supportato per le intestazioni della risposta |
|---|---|---|---|---|
cdn_cache_status |
Un elenco separato da virgole delle località (codice IATA dell'aeroporto più vicino) e degli stati di ogni nodo cache nel percorso richiesta/risposta, dove 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 US-ASCII e i seguenti caratteri:
!#$%&'*+-.^_`|~. |
✔ | ✔ | |
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 a
codici ISO-3166-1
alpha-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 di suddivisione Unicode CLDR, 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. Si tratta del parametro del tempo di round trip uniforme (SRTT) misurato dallo stack TCP della CDN, in base al documento RFC 2988. | ✔ | ✔ | |
device_request_type |
Il tipo di dispositivo utilizzato dal client. Questi sono i valori validi: DESKTOP, MOBILE,
TABLET, SMART_TV,
GAME_CONSOLE, WEARABLE,
e UNDETERMINED. |
✔ | ✔ | |
host |
Il nome host e il numero di porta del server a cui è stata inviata originariamente la richiesta del client
corrispondenti al valore dell'
Host intestazione della richiesta per HTTP/1.1 o alla
:authority pseudo-header per HTTP/2. |
✔ | ✔ | |
original_request_id |
L'identificatore univoco assegnato alla richiesta che ha generato originariamente
questa risposta. Viene compilato solo se è diverso da
request_id per le risposte memorizzate nella cache. |
✔ | ||
origin_name |
La risorsa EdgeCacheOrigin da cui è stata inviata la risposta
tramite proxy. |
✔ | ||
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 della risposta. Il valore
è definito nel documento
RFC 9209.
Una risorsa EdgeCacheService è rappresentata da
Google-Edge-Cache. Se la risposta è stata recuperata dall'origine,
una EdgeCacheOrigin
risorsa è rappresentata da Google-Edge-Cache-Origin. |
✔ | ||
tls_sni_hostname |
L'indicazione del nome del server (come definita in RFC 6066), se fornita dal client durante l'handshake TLS o QUIC. Il nome host viene convertito in lettere minuscole e viene rimosso qualsiasi punto finale. | ✔ | ✔ | |
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 l'handshake TLS. 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 crittografate. |
✔ | ✔ | |
user_agent_family |
La famiglia di browser utilizzata dal client. 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. |
✔ | ✔ |
Le seguenti considerazioni si applicano alle variabili personalizzate:
Le intestazioni della richiesta e della risposta esistenti vengono mantenute, ad eccezione delle seguenti, che vengono rimosse:
X-User-IP- Qualsiasi intestazione con
X-GoogleoX-GFE
Le chiavi e i valori delle intestazioni devono essere conformi al documento RFC 7230, con forme obsolete non consentite.
Tutte le chiavi delle intestazioni sono in minuscolo (per HTTP/2).
Alcune intestazioni vengono 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 unite solo le intestazioni 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 a queste. 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.
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 cache e dovevano essere 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 da tutti i componenti dell'infrastruttura di memorizzazione nella cache.- Se l'intestazione contiene anche
hitomiss, 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
hitomiss, i contenuti richiesti sono stati considerati non memorizzabili nella cache da tutti i componenti di memorizzazione nella cache e tutte le richieste per questi contenuti vengono recuperate dall'origine. Per assicurarti che i contenuti vengano memorizzati nella cache in modo appropriato, esamina i requisiti dell'origineMedia CDN.
- Se l'intestazione contiene anche
Intestazioni predefinite
Media CDN aggiunge le seguenti intestazioni della richiesta e della risposta rispettivamente alle richieste di origine e alle risposte del 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, 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 in cache). L'età viene in genere calcolata in base al momento in cui l' oggetto è stato inizialmente memorizzato nella cache in una località della 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 ti consentono di identificare l'indirizzo IP del client di connessione
quando nel percorso è presente uno 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 di fatto dell'
Entrambe le intestazioni vengono inviate in una richiesta per supportare le origini legacy che potrebbero
non essere a conoscenza dell'intestazione |
✔ |
Le chiavi delle intestazioni vengono convertite in minuscolo sia per le intestazioni della richiesta sia per quelle della risposta, perché le chiavi delle intestazioni non fanno distinzione tra maiuscole e minuscole.
È possibile aggiungere altre intestazioni, tra cui la località del punto di presenza (PoP) edge e lo stato della cache (ad esempio hit e miss), utilizzando
le variabili di intestazione dinamiche.