Configurazione del traffico sulla rete CDN cdn-configuring-cloud
AEM as a Cloud Service offre una raccolta di funzionalità configurabili a livello di CDN gestita dall'Adobe che modificano la natura delle richieste in ingresso o delle risposte in uscita. Le seguenti regole, descritte in dettaglio in questa pagina, possono essere dichiarate per ottenere il seguente comportamento:
- Trasformazioni richieste - Modifica gli aspetti delle richieste in arrivo, inclusi intestazioni, percorsi e parametri.
- Trasformazioni di risposta - Modifica le intestazioni che stanno per essere inviate al client (ad esempio, un browser Web).
- Reindirizzamenti lato client - attiva un reindirizzamento del browser. Questa funzione non è ancora disponibile in versione GA, ma è disponibile per gli utenti che la utilizzano da subito.
- Selettori di origine - proxy a un backend di origine diverso.
Nella rete CDN sono configurabili anche le regole del filtro del traffico (incluso WAF), che controllano il traffico consentito o negato dalla rete CDN. Questa funzione è già stata rilasciata. Per ulteriori informazioni, consulta la pagina Regole filtro traffico, incluse le regole WAF.
Inoltre, se la rete CDN non è in grado di contattare la relativa origine, puoi scrivere una regola che fa riferimento a una pagina di errore personalizzata con hosting autonomo (di cui viene quindi eseguito il rendering). Ulteriori informazioni leggendo l'articolo Configurazione delle pagine di errore CDN.
Tutte queste regole, dichiarate in un file di configurazione nel controllo del codice sorgente, vengono distribuite utilizzando Pipeline di configurazione di Cloud Manager. Tieni presente che la dimensione cumulativa del file di configurazione, incluse le regole del filtro del traffico, non può superare i 100 KB.
Ordine di valutazione order-of-evaluation
Dal punto di vista funzionale, le varie feature menzionate in precedenza vengono valutate nella seguente sequenza:
Configurazione initial-setup
Prima di configurare il traffico sulla rete CDN, è necessario effettuare le seguenti operazioni:
- Crea questa cartella e struttura di file nella cartella di livello principale del progetto Git:
config/
cdn.yaml
-
Il file di configurazione
cdn.yaml
deve contenere sia i metadati che le regole descritte negli esempi seguenti. Il parametrokind
deve essere impostato suCDN
e la versione deve essere impostata sulla versione dello schema, attualmente1
. -
Crea una pipeline di configurazione della distribuzione di destinazione in Cloud Manager. Consulta configurazione delle pipeline di produzione e configurazione delle pipeline non di produzione.
Note
- Al momento gli RDE non supportano la pipeline di configurazione.
- Puoi utilizzare
yq
per convalidare localmente la formattazione YAML del file di configurazione (ad es.yq cdn.yaml
).
Sintassi configuration-syntax
I tipi di regole nelle sezioni seguenti condividono una sintassi comune.
A una regola viene fatto riferimento tramite un nome, una "clausola when" condizionale e azioni.
La clausola when determina se una regola verrà valutata in base a proprietà quali dominio, percorso, stringhe di query, intestazioni e cookie. La sintassi è la stessa per tutti i tipi di regole. Per ulteriori dettagli, vedere la sezione Struttura condizione nell'articolo Regole filtro traffico.
I dettagli del nodo delle azioni differiscono per tipo di regola e sono descritti nelle singole sezioni seguenti.
Richiedi trasformazioni request-transformations
Le regole di trasformazione delle richieste consentono di modificare le richieste in ingresso. Le regole supportano l’impostazione, la disimpostazione e l’alterazione di percorsi, parametri di query e intestazioni (inclusi i cookie) in base a varie condizioni di corrispondenza, comprese le espressioni regolari. Puoi anche impostare le variabili, a cui è possibile fare riferimento in un secondo momento nella sequenza di valutazione.
I casi d’uso sono vari e includono la riscrittura degli URL per semplificare l’applicazione o mappare gli URL legacy.
Come indicato in precedenza, esiste un limite di dimensione per il file di configurazione, pertanto le organizzazioni con requisiti più grandi devono definire regole nel livello apache/dispatcher
.
Esempio di configurazione:
kind: "CDN"
version: "1"
metadata:
envTypes: ["dev", "stage", "prod"]
data:
requestTransformations:
removeMarketingParams: true
rules:
- name: set-header-rule
when:
reqProperty: path
like: /set-header
actions:
- type: set
reqHeader: x-some-header
value: some value
- name: unset-header-rule
when:
reqProperty: path
like: /unset-header
actions:
- type: unset
reqHeader: x-some-header
- name: unset-matching-query-params-rule
when:
reqProperty: path
equals: /unset-matching-query-params
actions:
- type: unset
queryParamMatch: ^removeMe_.*$
- name: unset-all-query-params-except-exact-two-rule
when:
reqProperty: path
equals: /unset-all-query-params-except-exact-two
actions:
- type: unset
queryParamMatch: ^(?!leaveMe$|leaveMeToo$).*$
- name: multi-action
when:
reqProperty: path
like: /multi-action
actions:
- type: set
reqHeader: x-header1
value: body set by transformation rule
- type: set
reqHeader: x-header2
value: '201'
- name: replace-html
when:
reqProperty: path
like: /mypath
actions:
- type: transform
reqProperty: path
op: replace
match: \.html$
replacement: ""
Azioni
Nella tabella seguente sono illustrate le azioni disponibili.
Le azioni possono essere concatenate tra loro. Ad esempio:
actions:
- type: transform
reqProperty: path
op: replace
match: \.html$
replacement: ""
- type: transform
reqProperty: path
op: tolower
Variabili variables
Puoi impostare le variabili durante la trasformazione della richiesta e quindi farvi riferimento in un secondo momento nella sequenza di valutazione. Per ulteriori dettagli, consulta il diagramma dell'ordine di valutazione.
Esempio di configurazione:
kind: "CDN"
version: "1"
metadata:
envTypes: ["prod", "dev"]
data:
requestTransformations:
rules:
- name: set-variable-rule
when:
reqProperty: path
equals: /set-variable
actions:
- type: set
var: some_var_name
value: some_value
responseTransformations:
rules:
- name: set-response-header-while-variable
when:
var: some_var_name
equals: some_value
actions:
- type: set
respHeader: x-some-header
value: some header value
Trasformazioni di risposta response-transformations
Le regole di trasformazione delle risposte consentono di impostare e annullare l’impostazione delle intestazioni delle risposte in uscita della rete CDN. Inoltre, consulta l’esempio precedente per un riferimento a una variabile precedentemente impostata in una regola di trasformazione della richiesta.
Esempio di configurazione:
kind: "CDN"
version: "1"
metadata:
envTypes: ["prod", "dev"]
data:
responseTransformations:
rules:
- name: set-response-header-rule
when:
reqProperty: path
like: /set-response-header
actions:
- type: set
value: value-set-by-resp-rule
respHeader: x-resp-header
- name: unset-response-header-rule
when:
reqProperty: path
like: /unset-response-header
actions:
- type: unset
respHeader: x-header1
# Example: Multi-action on response header
- name: multi-action-response-header-rule
when:
reqProperty: path
like: /multi-action-response-header
actions:
- type: set
respHeader: x-resp-header-1
value: value-set-by-resp-rule-1
- type: set
respHeader: x-resp-header-2
value: value-set-by-resp-rule-2
Azioni
Nella tabella seguente sono illustrate le azioni disponibili.
Selettori di origine origin-selectors
Puoi sfruttare la rete CDN dell’AEM per indirizzare il traffico a diversi backend, incluse le applicazioni non basate su Adobi (ad esempio in base al percorso o al sottodominio).
Esempio di configurazione:
kind: "CDN"
version: "1"
metadata:
envTypes: ["dev"]
data:
originSelectors:
rules:
- name: example-com
when: { reqProperty: path, like: /proxy-me* }
action:
type: selectOrigin
originName: example-com
# skpCache: true
origins:
- name: example-com
domain: www.example.com
# ip: '1.1.1.1'
# forwardHost: true
# forwardCookie: true
# forwardAuthorization: true
# timeout: 20
Azioni
Nella tabella seguente è illustrata l’azione disponibile.
Origini
Le connessioni alle origini sono solo SSL e utilizzano la porta 443.
Esecuzione del proxy a Edge Delivery Services proxying-to-edge-delivery
Esistono scenari in cui i selettori di origine devono essere utilizzati per instradare il traffico attraverso i Edge Delivery Services AEM Publish verso l’AEM:
- Alcuni contenuti vengono forniti da un dominio gestito da AEM Publish, mentre altri contenuti dello stesso dominio vengono forniti dai Edge Delivery Services
- Il contenuto distribuito dai Edge Delivery Services trarrebbe vantaggio dalle regole distribuite tramite la pipeline di configurazione, incluse le regole del filtro del traffico o le trasformazioni di richieste/risposte
Di seguito è riportato un esempio di regola del selettore di origine che può eseguire questa operazione:
kind: CDN
version: '1'
data:
originSelectors:
rules:
- name: select-edge-delivery-services-origin
when:
allOf:
- reqProperty: tier
equals: publish
- reqProperty: domain
equals: <Production Host>
- reqProperty: path
matches: "^^(/scripts/.*|/styles/.*|/fonts/.*|/blocks/.*|/icons/.*|.*/media_.*|/favicon.ico)"
action:
type: selectOrigin
originName: aem-live
origins:
- name: aem-live
domain: main--repo--owner.aem.live
Reindirizzamenti lato client client-side-redirectors
aemcs-cdn-config-adopter@adobe.com
e descrivi il tuo caso d'uso.Puoi utilizzare le regole di reindirizzamento lato client per 301, 302 e reindirizzamenti lato client simili. Se una regola corrisponde, la rete CDN risponde con una riga di stato che include il codice di stato e il messaggio (ad esempio, HTTP/1.1 301 Spostato definitivamente), nonché l’intestazione della posizione impostata.
Sono consentite posizioni sia assolute che relative con valori fissi.
Tieni presente che la dimensione cumulativa del file di configurazione, incluse le regole del filtro del traffico, non può superare i 100 KB.
Esempio di configurazione:
kind: "CDN"
version: "1"
metadata:
envTypes: ["dev"]
data:
experimental_redirects:
rules:
- name: redirect-absolute
when: { reqProperty: path, equals: "/page.html" }
action:
type: redirect
status: 301
location: https://example.com/page
- name: redirect-relative
when: { reqProperty: path, equals: "/anotherpage.html" }
action:
type: redirect
location: /anotherpage