CDN-configuratiefragmenten voor algemene scenario's cdn-configuration-snippets

In dit artikel worden praktische cdn.yaml patronen voor AEM as a Cloud Service verzameld. Gebruik hen samen met de eigenschapdocumentatie voor ​ CDN verkeersregels ​, ​ klant-geleide geloofsbrieven CDN ​, en ​ regels van de verkeersfilter met inbegrip van WAF ​. Stel fragmenten met een Cloud Manager ​ config pijpleiding ​ op.

NOTE
Vervang gastheernamen, wegen, IP waaiers, sleutels, en drempels met waarden die uw programma aanpassen. Wijzigingen in een niet-productieomgeving testen voordat ze worden bevorderd.

Door de klant beheerde CDN customer-managed-cdn

Edge Key-verificatie instellen voor alleen bepaalde domeinen edge-auth-selected-hosts

Probleem: Op a ​ klant-geleide CDN ​, moet u authentificatie voor sommige klant hostnames afdwingen terwijl andere hostnames die bereiken publiceren beschikbaar zonder die kopbal (bijvoorbeeld tijdens rollout of wanneer slechts één merkdomein achter uw CDN) zou moeten blijven.

Oplossing: Vereis X-AEM-Edge-Key authentificatie slechts wanneer eerste hostname van X-Forwarded-Host uw doel hostname (bijvoorbeeld example.com) evenaart. De regel gebruikt de forwardedDomain request-eigenschap om die overeenkomst uit te voeren en voert de authenticate -actie uit tegen de Edge-authenticator. Vervang hostnamen, verificatienamen en belangrijke plaatsaanduidingen voor uw programma.

kind: "CDN"
version: "1"
data:
  authentication:
    authenticators:
      - name: edge-key-auth
        type: edge
        edgeKey1: ${{CDN_EDGEKEY_1}}
        edgeKey2: ${{CDN_EDGEKEY_2}}
    rules:
      - name: edge-key-auth-rule
        when: { reqProperty: forwardedDomain, equals: "example.com" }
        action:
          type: authenticate
          authenticator: edge-key-auth

De Zeer belangrijke Authentificatie van Edge van de vestiging voor Verzoeken die niet uit IPs van VPN komen edge-auth-trusted-ips

Probleem: De de randzeer belangrijke authentificatie van de opstelling voor BYOCDN maar staat directe toegang toe om domein slechts voor VPN IPs te publiceren

Oplossing: Vereis X-AEM-Edge-Zeer belangrijke authentificatie slechts wanneer cliënt IP niet in de lijst van VPN IPs is

kind: "CDN"
version: "1"
data:
  authentication:
    authenticators:
      - name: edge-key-auth
        type: edge
        edgeKey1: ${{CDN_EDGEKEY_1}}
        edgeKey2: ${{CDN_EDGEKEY_2}}
    rules:
      - name: edge-key-auth-rule
        when: { reqProperty: clientIp, notIn: ["10.0.0.1", "11.0.0.0/24", "<other VPN IPs>"] }
        action:
          type: authenticate
          authenticator: edge-key-auth

Omleiding redirects

Omleiding van APEX-domein naar www apex-to-www

kind: "CDN"
version: "1"
data:
 redirects:
   rules:
     - name: non-www-to-www-redirect
       when:
         reqProperty: domain
         doesNotMatch: '^www\.'
       action:
         type: redirect
         status: 301
         location:
           join:
             format: 'https://www.%s%s'
             args:
               - reqProperty: domain
               - reqProperty: url

Cache-toets wijzigen cache-key

De CDN stelt geen afzonderlijk "geheim voorgeheugensleutel"gebied bloot. Omdat URL aan caching deelneemt, kunt u geheim voorgeheugeningangen splitsen door URL-voor voorbeeld te veranderen door een vraagparameter door a ​ verzoektransformatie ​ toe te voegen.

kind: "CDN"
version: "1"
data:
  requestTransformations:
    rules:
      - name: set-request-different-cache-curl
        when:
          allOf:
            - reqProperty: tier
              equals: publish
            - reqHeader: user-agent
              matches: curl
        actions:
          - type: set
            queryParam: cache
            value: 'curl'

Omleiden naar een genormaliseerd pad trailing-slash

Verzend een permanente omleiding wanneer een browser bij het publiceren om een slash met het teken vraagt, bijvoorbeeld van https://www.example.com/path/ naar https://www.example.com/path .

kind: "CDN"
version: "1"
data:
  redirects:
    rules:
      - name: remove-trailing-slash
        when:
          allOf:
            - reqProperty: tier
              equals: publish
            - reqProperty: domain
              equals: www.example.com
            - reqProperty: originalPath
              matches: ^/(.+)/$
        action:
          type: redirect
          status: 301
          location:
            reqProperty: originalPath
            transform:
              - op: replace
                match: ^/(.+)/$
                replacement: https://www.example.com/\1
kind: "CDN"
version: "1"
data:
  requestTransformations:
    rules:
      - name: options-response
        when: { reqProperty: tier, equals: publish }
        actions:
        - type: set
          reqHeader: x-mycookie-info
          value:
            reqCookie: mycookie
            transform:
            - 'base64decode'
            - { op: 'replace', match: '"info":\s*"([^"]*)"', replacement: '\1'}

Oorsprong instellen cross-origin

OPTIONS-verzoeken vanuit de CDN verzenden options-from-cdn

kind: "CDN"
version: "1"
data:
  requestTransformations:
    rules:
      - name: options-response
        when:
          allOf:
            - { reqProperty: path, like: /mypathi*  }
            - { reqProperty: method, equals: "OPTIONS" }
            - { reqHeader: Origin, equals: "https://example.com" }
        actions:
          - type: respond
            status: 200
            reason: "OK"
            headers:
              content-type: 'text/plain'
              access-control-allow-origin: { reqHeader: Origin }
              access-control-allow-methods: "*"
              access-control-allow-headers: "*"

Verkeersfilters traffic-filters

Snelheidsbeperking ASN rate-limit-asn

Probleem: De tariefgrenzen van per-IP kunnen een verdeeld ontkenning-van-dienst (DDoS) patroon missen: elk adres blijft onder de drempel, zo wettig en misbruik verkeer kijken als bij de IP laag.

Oplossing: De verzoeken van de telling door autonome systeemnaam (clientAsName) zodat aggregeert de limiter gastheren die de zelfde netwerknaam delen. Het fragment schrijft clientAsName naar een logeigenschap op elke aanvraag en past vervolgens een snelheidslimiet toe op auteur en publiceert gegroepeerd op die waarde. Vele gebruikers kunnen één ASN (bijvoorbeeld grote ISP of een collectieve uitgang van VPN) delen, zo stemmen zorgvuldig grenzen en controleren CDN- logboeken voor valse positieven.

kind: "CDN"
version: "1"
data:
  requestTransformations:
    rules:
      - name: log-on-request
        when: "*"
        actions:
          - type: set
            logProperty: client_as_name
            value:
              reqProperty: clientAsName
  trafficFilters:
    rules:
    - name: limit-requests-client-as-name
      when:
        reqProperty: tier
        matches: "author|publish"
      rateLimit:
        limit: 60
        window: 10
        penalty: 300
        count: all
        groupBy:
          - reqProperty: clientAsName
      action: block
recommendation-more-help
fbcff2a9-b6fe-4574-b04a-21e75df764ab