以下示例使用 Terraform 为 zone 定义单个 cache rule。该规则配置多个缓存设置,并为指向 example.net 的传入请求设置自定义 cache key。
Terraform cloudflare_ruleset resource
cloudflare_ruleset resource# Cache rule configuring cache settings and defining custom cache keys
resource "cloudflare_ruleset" "cache_rules_example" {
zone_id = "<ZONE_ID>"
name = "Set cache settings"
description = "Set cache settings for incoming requests"
kind = "zone"
phase = "http_request_cache_settings"
rules = [
{
ref = "cache_settings_custom_cache_key"
description = "Set cache settings and custom cache key for example.net"
expression = "(http.host eq \"example.net\")"
action = "set_cache_settings"
action_parameters = {
edge_ttl = {
mode = "override_origin"
default = 60
status_code_ttl = [
{
status_code = 200
value = 50
},
{
status_code_range = {
from = 201
to = 300
}
value = 30
}
]
}
browser_ttl = {
mode = "respect_origin"
}
serve_stale = {
disable_stale_while_updating = true
}
respect_strong_etags = true
cache_key = {
ignore_query_strings_order = false
cache_deception_armor = true
custom_key = {
query_string = {
exclude = {
all = true
}
}
header = {
include = ["habc", "hdef"]
check_presence = ["habc_t", "hdef_t"]
exclude_origin = true
}
cookie = {
include = ["cabc", "cdef"]
check_presence = ["cabc_t", "cdef_t"]
}
user = {
device_type = true
geo = false
}
host = {
resolved = true
}
}
}
origin_error_page_passthru = false
}
}
]
}使用 Terraform 时,通过 ref 字段可在更新后保持稳定的规则 ID。添加该字段可防止 Terraform 在变更时重建规则。更多信息请参阅 故障排除(Terraform 文档)。
以下示例配置 Vary。它规范化 Accept 和 Accept-Language,并对源站 Vary 响应中的任何其他标头 bypass cache。
Terraform example: Cache expected Vary responses
variable "zone_id" {
type = string
}
resource "cloudflare_ruleset" "cache_vary_example" {
zone_id = var.zone_id
name = "Set cache settings"
description = "Set cache settings for incoming requests"
kind = "zone"
phase = "http_request_cache_settings"
rules = [
{
ref = "cache_vary"
description = "Cache expected Vary responses"
expression = "(http.host eq \"example.com\")"
action = "set_cache_settings"
action_parameters = {
cache = true
vary = {
default = {
action = "bypass"
}
headers = {
"accept" = {
action = "normalize"
media_types = [
"text/html",
"application/json"
]
}
"accept-language" = {
action = "normalize"
languages = [
"en",
"fr",
"de"
]
}
}
}
}
}
]
}使用 Terraform 时,通过 ref 字段可在更新后保持稳定的规则 ID。添加该字段可防止 Terraform 在变更时重建规则。更多信息请参阅 故障排除(Terraform 文档)。
有关将 Terraform 与 Cloudflare 一起使用的更多指导,请参阅 Terraform。