INTEGRITY Dokumentace

Konfigurace Transform Rules pomocí Terraformu

Tato stránka obsahuje příklady vytváření Transform Rules v zóně pomocí Terraformu. Příklady pokrývají tyto scénáře:

Pokud používáte Cloudflare API, podívejte se na následující zdroje:

Než začnete

Získejte potřebná ID účtu nebo zóny

Konfigurace Terraformu uvedené na této stránce vyžadují ID zóny (nebo ID účtu) zóny či účtu, do kterého budete rulesety nasazovat.

Import nebo odstranění existujících sad pravidel

Terraform předpokládá, že má nad rulesety účtu a zóny úplnou kontrolu. Pokud již máte v účtu nebo zóně rulesety nakonfigurované, postupujte jedním z následujících způsobů:


Vytvoření pravidla pro přepis URL

Následující příklad vytváří pravidlo URL rewrite, které přepisuje požadavky na example.com/old-folder na example.com/new-folder:

Požadovaná oprávnění API tokenu

Všechny následující oprávnění tokenu jsou povinné:

  • Zone Transform Rules Write
  • Account Rulesets Read

Nakonfigurujte cloudflare_ruleset ↗ prostředek:

resource "cloudflare_ruleset" "transform_url_rewrite" {
  zone_id     = var.cloudflare_zone_id
  name        = "Transform Rule performing a static URL rewrite"
  description = ""
  kind        = "zone"
  phase       = "http_request_transform"

  rules = [{
    ref         = "url_rewrite_old_folder"
    description = "Example URL rewrite rule"
    expression  = "(http.host eq \"example.com\" and http.request.uri.path eq \"/old-folder\")"
    action      = "rewrite"
    action_parameters = {
      uri = {
        path = {
          value = "/new-folder"
        }
      }
    }
  }]
}
resource "cloudflare_ruleset" "transform_url_rewrite" {
  zone_id     = "<ZONE_ID>"
  name        = "Transform Rule performing a static URL rewrite"
  description = ""
  kind        = "zone"
  phase       = "http_request_transform"

  rules {
    ref         = "url_rewrite_old_folder"
    description = "Example URL rewrite rule"
    expression  = "(http.host eq \"example.com\" and http.request.uri.path eq \"/old-folder\")"
    action      = "rewrite"
    action_parameters {
      uri {
        path {
          value = "/new-folder"
        }
      }
    }
  }
}

Chcete-li vytvořit další pravidlo URL rewrite, přidejte nové rules objekt do stejného cloudflare_ruleset prostředek.

Použijte ref pole, abyste při použití Terraformu měli stabilní ID pravidel napříč aktualizacemi. Přidání tohoto pole zabrání tomu, aby Terraform při změnách pravidlo vytvářel znovu. Další informace najdete v Řešení potíží.


Další informace o přepisování URL najdete v URL Rewrite Rules.

Vytvoření pravidla pro úpravu hlaviček požadavku

Následující příklad konfigurace provádí tyto úpravy hlaviček HTTP požadavků:

Požadovaná oprávnění API tokenu

Všechny následující oprávnění tokenu jsou povinné:

  • Zone Transform Rules Write
  • Account Rulesets Read

Nakonfigurujte cloudflare_ruleset ↗ prostředek:

resource "cloudflare_ruleset" "transform_modify_request_headers" {
  zone_id     = var.cloudflare_zone_id
  name        = "Transform Rule performing HTTP request header modifications"
  description = ""
  kind        = "zone"
  phase       = "http_request_late_transform"

  rules = [{
    ref         = "modify_request_headers"
    description = "Example request header transform rule"
    expression  = "true"
    action      = "rewrite"
    action_parameters = {
      headers = {
        "my-header-1" = {
          operation = "set"
          value     = "Fixed value"
        }
        "my-header-2" = {
          operation  = "set"
          expression = "cf.zone.name"
        }
        "existing-header" = {
          operation = "remove"
        }
      }
    }
  }]
}
resource "cloudflare_ruleset" "transform_modify_request_headers" {
  zone_id     = "<ZONE_ID>"
  name        = "Transform Rule performing HTTP request header modifications"
  description = ""
  kind        = "zone"
  phase       = "http_request_late_transform"

  rules {
    ref         = "modify_request_headers"
    description = "Example request header transform rule"
    expression  = "true"
    action      = "rewrite"
    action_parameters {
      headers {
        name      = "my-header-1"
        operation = "set"
        value     = "Fixed value"
      }
      headers {
        name       = "my-header-2"
        operation  = "set"
        expression = "cf.zone.name"
      }
      headers {
        name      = "existing-header"
        operation = "remove"
      }
    }
  }
}

Chcete-li vytvořit další pravidlo pro transformaci hlaviček požadavků, přidejte nové rules objekt do stejného cloudflare_ruleset prostředek.

Použijte ref pole, abyste při použití Terraformu měli stabilní ID pravidel napříč aktualizacemi. Přidání tohoto pole zabrání tomu, aby Terraform při změnách pravidlo vytvářel znovu. Další informace najdete v Řešení potíží.

Další informace o úpravě hlaviček požadavku najdete v Request Header Transform Rules.

Vytvoření pravidla pro úpravu hlaviček odpovědi

Následující příklad konfigurace provádí tyto úpravy hlaviček HTTP odpovědí:

Požadovaná oprávnění API tokenu

Všechny následující oprávnění tokenu jsou povinné:

  • Zone Transform Rules Write
  • Account Rulesets Read

Nakonfigurujte cloudflare_ruleset ↗ prostředek:

resource "cloudflare_ruleset" "transform_modify_response_headers" {
  zone_id     = var.cloudflare_zone_id
  name        = "Transform Rule performing HTTP response header modifications"
  description = ""
  kind        = "zone"
  phase       = "http_response_headers_transform"

  rules = [{
    ref         = "modify_response_headers"
    description = "Example response header transform rule"
    expression  = "true"
    action      = "rewrite"
    action_parameters = {
      headers = {
        "my-header-1" = {
          operation = "set"
          value     = "Fixed value"
        }
        "my-header-2" = {
          operation  = "set"
          expression = "cf.zone.name"
        }
        "existing-header" = {
          operation = "remove"
        }
      }
    }
  }]
}
resource "cloudflare_ruleset" "transform_modify_response_headers" {
  zone_id     = "<ZONE_ID>"
  name        = "Transform Rule performing HTTP response header modifications"
  description = ""
  kind        = "zone"
  phase       = "http_response_headers_transform"

  rules {
    ref         = "modify_response_headers"
    description = "Example response header transform rule"
    expression  = "true"
    action      = "rewrite"
    action_parameters {
      headers {
        name      = "my-header-1"
        operation = "set"
        value     = "Fixed value"
      }
      headers {
        name       = "my-header-2"
        operation  = "set"
        expression = "cf.zone.name"
      }
      headers {
        name      = "existing-header"
        operation = "remove"
      }
    }
  }
}

Chcete-li vytvořit další pravidlo pro transformaci hlaviček odpovědí, přidejte nové rules objekt do stejného cloudflare_ruleset prostředek.

Použijte ref pole, abyste při použití Terraformu měli stabilní ID pravidel napříč aktualizacemi. Přidání tohoto pole zabrání tomu, aby Terraform při změnách pravidlo vytvářel znovu. Další informace najdete v Řešení potíží.

Další informace o úpravě hlaviček odpovědi najdete v Response Header Transform Rules.

Konfigurace Managed Transforms

Požadovaná oprávnění API tokenu

Všechny následující oprávnění tokenu jsou povinné:

  • Managed headers Write
  • Account Rulesets Read

Nakonfigurujte cloudflare_managed_transforms ↗ prostředek:

resource "cloudflare_managed_transforms" "tf_example" {
  zone_id = var.cloudflare_zone_id

  managed_request_headers = [{
    id      = "add_visitor_location_headers"
    enabled = true
  }]

  managed_response_headers = [{
    id      = "remove_x-powered-by_header"
    enabled = true
  }]
}
resource "cloudflare_managed_headers" "tf_example" {
  zone_id = "<ZONE_ID>"

  managed_request_headers {
    id      = "add_visitor_location_headers"
    enabled = true
  }

  managed_response_headers {
    id      = "remove_x-powered-by_header"
    enabled = true
  }
}

Ujistěte se, že aktualizovaná nastavení Managed Transforms uvádíte ve správném objektu (managed_request_headers nebo managed_response_headers).

Další informace o funkci Managed Transforms najdete v Managed Transforms.