Configuración del tráfico en la CDN cdn-configuring-cloud

AEM as a Cloud Service ofrece una colección de funciones configurables en CDN administrado por Adobe que modifican la naturaleza de las solicitudes entrantes o de las respuestas salientes. Se pueden declarar las siguientes reglas, descritas en detalle en esta página, para lograr el siguiente comportamiento:

También se pueden configurar en la CDN las reglas de filtro de tráfico (incluido WAF), que controlan qué tráfico permite o rechaza la CDN. Esta función ya está disponible y puede obtener más información al respecto en la Reglas de filtro de tráfico, incluidas las reglas WAF página.

Además, si la CDN no puede ponerse en contacto con su origen, puede escribir una regla que haga referencia a una página de error personalizada autoalojada (que luego se procesará). Para obtener más información, lea la Configuración de páginas de error de CDN artículo.

Todas estas reglas, declaradas en un archivo de configuración del control de código fuente, se implementan mediante Canalización de configuración de Cloud Manager. Tenga en cuenta que el tamaño acumulado del archivo de configuración, incluidas las reglas de filtro de tráfico, no puede superar los 100 KB.

Orden de evaluación order-of-evaluation

Desde el punto de vista funcional, las distintas funciones mencionadas anteriormente se evalúan en la siguiente secuencia:

imagen

Configuración initial-setup

Para poder configurar el tráfico en la CDN, debe hacer lo siguiente:

  • Cree esta carpeta y estructura de archivos en la carpeta de nivel superior del proyecto Git:
config/
     cdn.yaml

Notas

  • Actualmente, los RDE no admiten la canalización de configuración.
  • Puede utilizar yq para validar localmente el formato YAML del archivo de configuración (por ejemplo, yq cdn.yaml).

Sintaxis configuration-syntax

Los tipos de reglas de las secciones siguientes comparten una sintaxis común.

Se hace referencia a una regla mediante un nombre, una cláusula when condicional y acciones.

La cláusula when determina si se evaluará una regla en función de propiedades como dominio, ruta, cadenas de consulta, encabezados y cookies. La sintaxis es la misma en todos los tipos de reglas; para obtener más información, consulte la Sección Estructura de condición en el artículo Reglas del filtro de tráfico.

Los detalles del nodo de acciones difieren según el tipo de regla y se describen en las secciones individuales siguientes.

Solicitar transformaciones request-transformations

Las reglas de transformación de solicitudes permiten modificar las solicitudes entrantes. Las reglas admiten la configuración, desconfiguración y modificación de rutas, parámetros de consulta y encabezados (incluidas las cookies) en función de diversas condiciones de coincidencia, incluidas las expresiones regulares. También puede establecer variables, a las que se puede hacer referencia más adelante en la secuencia de evaluación.

Los casos de uso son variados e incluyen reescrituras de URL para la simplificación de la aplicación o la asignación de URL heredadas.

Como se ha mencionado anteriormente, existe un límite de tamaño para el archivo de configuración, por lo que las organizaciones con requisitos más grandes deben definir reglas en la apache/dispatcher capa.

Ejemplo de configuración:

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: ""

Acciones

En la tabla siguiente se explican las acciones disponibles.

Nombre
Propiedades
Significado
set
(reqProperty o reqHeader o queryParam o reqCookie), valor
Establece un parámetro de solicitud especificado (solo se admite la propiedad "path"), un encabezado de solicitud, un parámetro de consulta o una cookie, en un valor determinado.
var, valor
Establece una propiedad de solicitud especificada en un valor determinado.
anular
reqProperty
Quita un parámetro de solicitud especificado (solo se admite la propiedad "path"), un encabezado de solicitud, un parámetro de consulta o una cookie, de un valor determinado.
var
Quita una variable especificada.
queryParamMatch
Quita todos los parámetros de consulta que coinciden con una expresión regular especificada.
transformar
op:replace, (reqProperty o reqHeader o queryParam o reqCookie), match, replace
Reemplaza parte del parámetro de solicitud (solo se admite la propiedad "path") o el encabezado de solicitud, el parámetro de consulta o la cookie por un nuevo valor.
op:tolower, (reqProperty o reqHeader o queryParam o reqCookie)
Establece el parámetro de solicitud (solo se admite la propiedad "path") o el encabezado de solicitud, el parámetro de consulta o la cookie en su valor en minúsculas.

Las acciones se pueden encadenar. Por ejemplo:

actions:
    - type: transform
      reqProperty: path
      op: replace
      match: \.html$
      replacement: ""
    - type: transform
      reqProperty: path
      op: tolower

Variables variables

Puede establecer variables durante la transformación de la solicitud y luego hacer referencia a ellas más adelante en la secuencia de evaluación. Consulte la orden de evaluación diagrama para obtener más información.

Ejemplo de configuración:

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

Transformaciones de respuesta response-transformations

Las reglas de transformación de respuestas permiten establecer y anular la configuración de encabezados de las respuestas salientes de CDN. Además, consulte el ejemplo anterior para hacer referencia a una variable configurada anteriormente en una regla de transformación de solicitud.

Ejemplo de configuración:

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

Acciones

En la tabla siguiente se explican las acciones disponibles.

Nombre
Propiedades
Significado
set
reqHeader, valor
Establece un encabezado especificado en un valor determinado de la respuesta.
anular
respHeader
Quita un encabezado especificado de la respuesta.

Selectores de origen origin-selectors

AEM Puede aprovechar la CDN de la para enrutar el tráfico a diferentes backends, incluidas las aplicaciones que no sean de Adobe (tal vez por ruta o subdominio).

Ejemplo de configuración:

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
          # useCache: false
    origins:
      - name: example-com
        domain: www.example.com
        # ip: '1.1.1.1'
        # forwardHost: true
        # forwardCookie: true
        # forwardAuthorization: true
        # timeout: 20

Acciones

La acción disponible se explica en la tabla siguiente.

Nombre
Propiedades
Significado
selectOrigin
originName
Nombre de uno de los orígenes definidos.
useCache (opcional, el valor predeterminado es true)
Indicar si se debe utilizar el almacenamiento en caché para las solicitudes que coinciden con esta regla.

Orígenes

Las conexiones a orígenes son solo SSL y utilizan el puerto 443.

Propiedad
Significado
name
Nombre al que se puede hacer referencia mediante "action.originName".
sector
Nombre de dominio utilizado para conectarse al backend personalizado. También se utiliza para el SNI y la validación SSL.
ip (opcional, compatible con iv4 e ipv6)
Si se proporciona, se utiliza para conectarse al servidor en lugar de a "dominio". Todavía se utiliza "domain" para el SNI y la validación SSL.
forwardHost (opcional, el valor predeterminado es false)
Si se establece en true, el encabezado "Host" de la solicitud del cliente se pasará al backend; de lo contrario, el valor "domain" se pasará al encabezado "Host".
forwardCookie (opcional, el valor predeterminado es false)
Si se establece en true, el encabezado "Cookie" de la solicitud del cliente se pasará al servidor; de lo contrario, se eliminará el encabezado "Cookie".
forwardAuthorization (opcional, el valor predeterminado es false)
Si se establece en true, el encabezado "Autorización" de la solicitud del cliente se pasará al backend; de lo contrario, se eliminará el encabezado Autorización.
timeout (opcional, en segundos, el valor predeterminado es 60)
Número de segundos que la CDN debe esperar para que un servidor back-end envíe el primer byte de un cuerpo de respuesta HTTP. Este valor también se utiliza como tiempo de espera entre bytes para el servidor back-end.

Redirecciones del lado del cliente client-side-redirectors

NOTE
Esta función aún no está disponible de forma general. Para unirse al programa de adopción anticipada, envíe un correo electrónico a aemcs-cdn-config-adopter@adobe.com y describa su caso de uso.

Puede utilizar reglas de redireccionamiento del lado del cliente para redirecciones del lado del cliente 301, 302 y similares. Si una regla coincide, la CDN responde con una línea de estado que incluye el código y el mensaje de estado (por ejemplo, HTTP/1.1 301 Movido permanentemente), así como el conjunto de encabezado de ubicación.

Se permiten ubicaciones absolutas y relativas con valores fijos.

Tenga en cuenta que el tamaño acumulado del archivo de configuración, incluidas las reglas de filtro de tráfico, no puede superar los 100 KB.

Ejemplo de configuración:

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
Nombre
Propiedades
Significado
redireccionamiento
ubicación
Valor del encabezado "Ubicación".
estado (opcional, el valor predeterminado es 301)
Estado HTTP que se utilizará en el mensaje de redirección, 301 de forma predeterminada, los valores permitidos son: 301, 302, 303, 307, 308.
recommendation-more-help
fbcff2a9-b6fe-4574-b04a-21e75df764ab