This page provides examples of creating Transform Rules in a zone using Terraform. The examples cover the following scenarios:
If you are using the Cloudflare API, refer to the following resources:
The Terraform configurations provided in this page need the zone ID (or account ID) of the zone/account where you will deploy rulesets.
Terraform assumes that it has complete control over account and zone rulesets. If you already have rulesets configured in your account or zone, do one of the following:
cf-terraforming
tool. Recent versions of the tool can generate resource definitions for existing rulesets and import their configuration to Terraform state."kind": "root"
and "kind": "zone"
, respectively) and then defining your rulesets configuration in Terraform.The following example creates a URL rewrite rule that rewrites requests for example.com/old-folder
to example.com/new-folder
:
Note
Terraform code snippets below refer to the v4 SDK only.
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"
}
}
}
}
}
Use the ref
field to get stable rule IDs across updates when using Terraform. Adding this field prevents Terraform from recreating the rule on changes. For more information, refer to Troubleshooting.
To create another URL rewrite rule, add a new rules
object to the same cloudflare_ruleset
resource.
For more information on rewriting URLs, refer to URL Rewrite Rules.
The following configuration example performs the following adjustments to HTTP request headers:
my-header-1
header to the request with a static value.my-header-2
header to the request with a dynamic value defined by an expression.existing-header
header from the request, if it exists.Note
Terraform code snippets below refer to the v4 SDK only.
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"
}
}
}
}
Use the ref
field to get stable rule IDs across updates when using Terraform. Adding this field prevents Terraform from recreating the rule on changes. For more information, refer to Troubleshooting.
To create another request header transform rule, add a new rules
object to the same cloudflare_ruleset
resource.
For more information on modifying request headers, refer to Request Header Transform Rules.
The following configuration example performs the following adjustments to HTTP response headers:
my-header-1
header to the response with a static value.my-header-2
header to the response with a dynamic value defined by an expression.existing-header
header from the response, if it exists.Note
Terraform code snippets below refer to the v4 SDK only.
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"
}
}
}
}
Use the ref
field to get stable rule IDs across updates when using Terraform. Adding this field prevents Terraform from recreating the rule on changes. For more information, refer to Troubleshooting.
To create another response header transform rule, add a new rules
object to the same cloudflare_ruleset
resource.
For more information on modifying response headers, refer to Response Header Transform Rules.
Configure Managed TransformsNote
Terraform code snippets below refer to the v4 SDK only.
Use the cloudflare_managed_headers
Terraform resource to configure Managed Transforms. For example:
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
}
}
Make sure you include the Managed Transforms you are updating in the correct object (managed_request_headers
or managed_response_headers
).
For more information on Managed Transforms, refer to Managed Transforms.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4