Configuração do tráfego no CDN cdn-configuring-cloud
A AEM as a Cloud Service oferece uma coleção de recursos configuráveis na camada CDN gerenciada pela Adobe que modificam a natureza das solicitações de entrada ou respostas de saída. As seguintes regras, descritas em detalhes nesta página, podem ser declaradas para alcançar o seguinte comportamento:
- Solicitar transformações - modifique aspectos de solicitações de entrada, incluindo cabeçalhos, caminhos e parâmetros.
- Transformações de resposta - modifique cabeçalhos que estão no caminho de volta para o cliente (por exemplo, um navegador da Web).
- Redirecionamentos do lado do servidor - acione um redirecionamento do navegador.
- Seletores de origem - proxy para um back-end de origem diferente.
Também podem ser configuradas na CDN as Regras de filtro de tráfego (incluindo o WAF), que controlam qual tráfego é permitido ou negado pela CDN. Este recurso já foi lançado e você pode saber mais sobre ele na página Regras de filtro de tráfego, incluindo regras de WAF.
Além disso, se a CDN não puder entrar em contato com sua origem, você poderá escrever uma regra que faça referência a uma página de erro personalizada auto-hospedada (que é renderizada). Saiba mais sobre isso lendo o artigo Configurando páginas de erro de CDN.
Todas essas regras, declaradas em um arquivo de configuração no controle do código-fonte, são implantadas usando o pipeline de configuração do Cloud Manager. Observe que o tamanho cumulativo do arquivo de configuração, incluindo as regras de filtro de tráfego, não pode exceder 100 KB.
Ordem de avaliação order-of-evaluation
Funcionalmente, os vários recursos mencionados anteriormente são avaliados na seguinte sequência:
Configurar initial-setup
Antes de configurar o tráfego na CDN, é necessário fazer o seguinte:
-
Crie um arquivo com o nome
cdn.yamlou semelhante, referenciando os vários trechos de configuração nas seções abaixo.Todos os trechos têm estas propriedades comuns, que estão descritas em Pipeline de configuração. O valor da propriedade
kinddeve ser CDN e a propriedadeversiondeve ser definida como 1.code language-none kind: "CDN" version: "1" -
Coloque o arquivo em algum lugar em uma pasta de nível superior chamada config ou similar, conforme descrito em Pipeline de configuração.
-
Crie um Pipeline de configuração no Cloud Manager, conforme descrito em Pipeline de configuração.
-
Implante a configuração.
Sintaxe de regras configuration-syntax
Os tipos de regra nas seções abaixo compartilham uma sintaxe comum.
Uma regra é referenciada por um nome, uma "cláusula when" condicional e ações.
A cláusula "when" determina se uma regra será avaliada com base nas propriedades, incluindo domínio, caminho, sequências de consulta, cabeçalhos e cookies. A sintaxe é a mesma nos tipos de regras; para obter detalhes, consulte a seção Estrutura de condição, no artigo Regras de filtro de tráfego.
Os detalhes do nó de ações diferem por tipo de regra e são descritos nas seções individuais abaixo.
Nas regras de configuração, você pode referenciar segredos definidos como variáveis de ambiente (consulte Segredos de configuração).
Solicitar transformações request-transformations
As regras de transformação de solicitação permitem modificar solicitações recebidas. As regras oferecem suporte para a configuração, remoção e alteração de caminhos, parâmetros de consulta e cabeçalhos (incluindo cookies) com base em várias condições correspondentes, incluindo expressões regulares. Também é possível definir variáveis, que podem ser referenciadas posteriormente na sequência de avaliação.
Os casos de uso são variados e incluem regravações de URL para simplificação de aplicativos ou mapeamento de URLs herdados.
Como mencionado anteriormente, há um limite de tamanho para o arquivo de configuração, portanto, as organizações com requisitos maiores devem definir regras na camada apache/dispatcher.
Exemplo de configuração:
kind: "CDN"
version: "1"
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: set-header-with-reqproperty-rule
when:
reqProperty: path
like: /set-header
actions:
- type: set
reqHeader: x-some-header
value: {reqProperty: path}
- 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: ""
- name: log-on-request
when: "*"
actions:
- type: set
logProperty: forwarded_host
value:
reqHeader: x-forwarded-host
Ações
As ações disponíveis são explicadas na tabela abaixo.
As ações de substituição oferecem suporte aos grupos de captura, conforme ilustrado abaixo:
- name: extract-country-code-from-path
when:
reqProperty: path
matches: ^/([a-zA-Z]{2})(/.*|$)
actions:
- type: set
var: country-code
value:
reqProperty: path
- type: transform
var: country-code
op: replace
match: ^/([a-zA-Z]{2})(/.*|$)
replacement: \1
- name: replace-jpg-with-jpeg
when:
reqProperty: path
like: /mypath
actions:
- type: transform
reqProperty: path
op: replace
match: (.*)(\.jpg)$
replacement: "\1\.jpeg"
As ações podem ser encadeadas. Por exemplo:
actions:
- type: transform
reqProperty: path
op: replace
match: \.html$
replacement: ""
- type: transform
reqProperty: path
op: tolower
Variáveis variables
É possível definir variáveis durante a transformação da solicitação e, em seguida, referenciá-las posteriormente na sequência de avaliação. Consulte o diagrama ordem da avaliação para obter mais detalhes.
Exemplo de configuração:
kind: "CDN"
version: "1"
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
Propriedade de log logproperty
Você pode adicionar suas próprias propriedades de log nos logs CDN usando transformações de solicitação e resposta.
Exemplo de configuração:
requestTransformations:
rules:
- name: log-on-request
when: "*"
actions:
- type: set
logProperty: forwarded_host
value:
reqHeader: x-forwarded-host
responseTransformations:
rules:
- name: log-on-response
when: '*'
actions:
- type: set
logProperty: cache_control
value:
respHeader: cache-control
Exemplo de log:
{
"timestamp": "2025-03-26T09:20:01+0000",
"ttfb": 19,
"cli_ip": "147.160.230.112",
"cli_country": "CH",
"rid": "974e67f6",
"req_ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Safari/605.1.15",
"host": "example.com",
"url": "/content/hello.png",
"method": "GET",
"res_ctype": "image/png",
"cache": "PASS",
"status": 200,
"res_age": 0,
"pop": "PAR",
"rules": "",
"forwarded_host": "example.com",
"cache_control": "max-age=300"
}
Transformações de resposta response-transformations
As regras de transformação de resposta permitem definir e cancelar a definição de cabeçalhos, cookies e status das respostas de saída do CDN. Além disso, consulte o exemplo acima para fazer referência a uma variável previamente definida em uma regra de transformação de solicitação.
Exemplo de configuração:
kind: "CDN"
version: "1"
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
- 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
- name: status-code-rule
when:
reqProperty: path
like: status-code
actions:
- type: set
respProperty: status
value: '410'
- name: set-response-cookie-with-attributes-as-object
when: '*'
actions:
- type: set
respCookie: first-name
value: first-value
attributes:
expires: '2025-08-29T10:00:00'
domain: example.com
path: /some-path
secure: true
httpOnly: true
extension: ANYTHING
- name: unset-response-cookie
when: '*'
actions:
- type: unset
respCookie: third-name
Ações
As ações disponíveis são explicadas na tabela abaixo.
Seletores de origem origin-selectors
Você pode aproveitar a CDN da AEM para rotear o tráfego para diferentes back-ends, incluindo aplicativos que não sejam da Adobe (talvez por caminho ou subdomínio).
Exemplo de configuração:
kind: "CDN"
version: "1"
data:
originSelectors:
rules:
- name: example-com
when: { reqProperty: path, like: /proxy* }
action:
type: selectOrigin
originName: example-com
# skipCache: true
# headers:
# Authorization: ${{AUTH_TOKEN}}
origins:
- name: example-com
domain: www.example.com
# ip: '1.1.1.1'
# forwardHost: true
# forwardCookie: true
# forwardAuthorization: true
# timeout: 20
Ações
A ação disponível é explicada na tabela abaixo.
{})static).{})Origens
As conexões com as origens são somente SSL e usam a porta 443.
.adobeaemcloud.com. Não é possível criar proxy diretamente para um domínio adobeaemcloud.com. Essa restrição protege contra loops de solicitação indesejados. Para usar o tráfego de proxy em seu ambiente AEM as a Cloud Service, use um domínio personalizado instalado em seu ambiente AEMaaCS como back-end de origem.Domínio personalizado de proxy para a camada estática do AEM proxy-custom-domain-static
Os seletores de origem podem ser usados para rotear o tráfego de publicação do AEM para o conteúdo estático do AEM implantado usando o pipeline de front-end. Os casos de uso incluem o fornecimento de recursos estáticos no mesmo domínio da página (por exemplo, example.com/static) ou em um domínio explicitamente diferente (por exemplo, static.example.com).
Este é um exemplo de uma regra de seletor de origem que pode fazer isso:
kind: CDN
version: '1'
data:
originSelectors:
rules:
- name: select-aem-static-origin
when:
reqProperty: domain
equals: static.example.com
action:
type: selectAemOrigin
originName: static
Utilização de proxy para o Edge Delivery Services proxying-to-edge-delivery
Há cenários em que os seletores de origem devem ser usados para rotear o tráfego por meio da Publicação do AEM para o AEM Edge Delivery Services:
- Parte do conteúdo é entregue por um domínio gerenciado pela AEM Publish, enquanto outro conteúdo do mesmo domínio é entregue pela Edge Delivery Services.
- O conteúdo entregue pelo Edge Delivery Services se beneficiaria das regras implantadas por meio do pipeline de configuração, incluindo regras de filtro de tráfego ou transformações de solicitação/resposta.
- O pipeline de configuração do Edge Delivery permite definir configurações de CDN gerenciadas pela Adobe definindo regras como
trafficFilters,originSelectorseredirects.
Este é um exemplo de uma regra de seletor de origem que pode fazer isso:
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
Utilização de proxy no ambiente do AEMaaCS proxying-to-aemaacs
Você não pode usar um domínio adobeaemcloud.com diretamente como uma origem na sua configuração de CDN. Isso é rejeitado (o domínio não deve conter .adobeaemcloud.com) para proteger contra loops de solicitação indesejados. Isso também se aplica ao roteamento de um domínio instalado para um site do Edge Delivery.
Se o domínio personalizado (www.example.com) já estiver instalado em um ambiente AEMaaCS, o roteamento padrão será roteado para o back-end do AEM sem nenhuma regra CDN. Use seletores de origem quando precisar rotear entre ambientes (por exemplo, de pXXXX-eYYYY para pXXXX-eZZZZ) ou de um site do Edge Delivery para um ambiente do AEMaaCS.
Para direcionar o tráfego de proxy para o ambiente do AEM as a Cloud Service nesses casos (por exemplo, para rotear caminhos específicos como /graphql para um back-end), instale um domínio personalizado no ambiente do AEMaaCS e use esse domínio personalizado como a origem na sua configuração de CDN.
Exemplo: Se a camada de publicação do AEM estiver acessível em publish-pXXXXX-eYYYYY.adobeaemcloud.com, não use esse domínio em originSelectors. Em vez disso:
- Instale um domínio personalizado em seu ambiente AEMaaCS (por exemplo,
aem-publish-origin.example.com) que aponte para seu serviço de publicação. - Na configuração da CDN, defina uma origem com esse domínio personalizado e roteie os caminhos desejados (por exemplo,
/graphql) para ele.
kind: CDN
version: '1'
data:
originSelectors:
rules:
- name: graphql-to-aem-publish
when:
allOf:
- reqProperty: domain
equals: www.example.com
- reqProperty: path
like: /graphql*
action:
type: selectOrigin
originName: aem-publish-origin
origins:
- name: aem-publish-origin
domain: aem-publish-origin.example.com
Redirecionamentos do lado do servidor server-side-redirectors
Você pode usar as regras de redirecionamento do lado do cliente para 301, 302 e redirecionamentos semelhantes do lado do cliente. Se uma regra for correspondente, o CDN responderá com uma linha de status que inclui o código de status e a mensagem (por exemplo, HTTP/1.1 301 Movido Permanentemente), bem como o conjunto de cabeçalhos do local.
São permitidas localizações absolutas e relativas com valores fixos.
Observe que o tamanho cumulativo do arquivo de configuração, incluindo as regras de filtro de tráfego, não pode exceder 100 KB.
Exemplo de configuração:
kind: "CDN"
version: "1"
data:
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
Os locais de um redirecionamento podem ser literais de cadeia de caracteres (por exemplo, https://www.example.com/page) ou o resultado de uma propriedade (por exemplo, caminho) que é transformada opcionalmente, com a seguinte sintaxe:
redirects:
rules:
- name: country-code-redirect
when: { reqProperty: path, like: "/" }
action:
type: redirect
location:
reqProperty: clientCountry
transform:
- op: replace
match: '^(.*)$'
replacement: 'https://www.example.com/\1/home'
- op: tolower
- name: www-redirect
when: { reqProperty: domain, equals: "example.com" }
action:
type: redirect
location:
reqProperty: url
transform:
- op: replace
match: '^/(.*)$'
replacement: 'https://www.example.com/\1'