← Poskytovatel Cloudflare Terraform / terraform / additional-configurations
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:
- Vytvoření pravidla pro přepis URL
- Vytvoření pravidla pro úpravu hlaviček požadavku
- Vytvoření pravidla pro úpravu hlaviček odpovědi
- Konfigurace Managed Transforms
Pokud používáte Cloudflare API, podívejte se na následující zdroje:
- Vytvořte pravidlo přepisu URL přes API
- Vytvořte pravidlo transformace hlavičky požadavku přes API
- Vytvořte pravidlo transformace hlavičky odpovědi přes API
- Konfigurace Managed Transforms
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.
- Chcete-li získat seznam účtů, ke kterým máte přístup, včetně jejich ID, použijte Výpis účtů operace.
- Chcete-li získat seznam zón, ke kterým máte přístup, včetně jejich ID, použijte Výpis zón operace.
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ů:
- Import existujících sad pravidel do Terraformu pomocí
cf-terraformingnástroje. Novější verze tohoto nástroje umí vygenerovat definice prostředků pro existující rulesety a importovat jejich konfiguraci do stavu Terraformu. - Začněte od začátku tím, že odstraňování stávajících rulesetů (sady pravidel účtu a zóny s
"kind": "root"a"kind": "zone", v tomto pořadí) a poté nadefinujete konfiguraci svých rulesetů v Terraformu.
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 WriteAccount 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ů:
- Přidá
my-header-1hlavičku k požadavku se statickou hodnotou. - Přidá
my-header-2hlavičku k požadavku s dynamickou hodnotou definovanou výrazem. - Odstraní
existing-headerhlavičku z požadavku, pokud existuje.
Požadovaná oprávnění API tokenu
Všechny následující oprávnění tokenu jsou povinné:
Zone Transform Rules WriteAccount 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í:
- Přidá
my-header-1hlavičku k odpovědi se statickou hodnotou. - Přidá
my-header-2hlavičku k odpovědi s dynamickou hodnotou definovanou výrazem. - Odstraní
existing-headerhlavičku z odpovědi, pokud existuje.
Požadovaná oprávnění API tokenu
Všechny následující oprávnění tokenu jsou povinné:
Zone Transform Rules WriteAccount 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 WriteAccount 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.