如何在Terraform中为Azure CDN规则添加多ModifyResponseHeader操作
解决Azure CDN交付规则中多同类型操作的Terraform配置问题
在Azure CDN端点的交付规则中配置多个同类型操作(如ModifyResponseHeader)时,直接重复定义modify_response_header_action块会导致属性被覆盖,但通过Terraform的列表型嵌套块特性可以实现和Azure门户一致的多操作配置逻辑。
核心解决方案
Terraform的azurerm_cdn_endpoint资源中,delivery_rule下的action是列表型嵌套块——每个同类型操作作为独立的action列表项存在,即可避免覆盖问题。
示例配置代码
resource "azurerm_cdn_endpoint" "example" { name = "example-cdn-endpoint" profile_name = azurerm_cdn_profile.example.name resource_group_name = azurerm_resource_group.example.name origin_host_name = azurerm_storage_account.example.primary_blob_host delivery_rule { name = "multiple-response-headers" order = 1 # 单个匹配条件(可根据业务需求调整或添加多个条件) request_header_condition { name = "User-Agent" operator = "Contains" match_values = ["Chrome"] negate_condition = false } # 第一个响应头操作:追加X-Custom-Header1 action { modify_response_header_action { action_type = "Append" header_name = "X-Custom-Header1" value = "cdn-custom-value-1" } } # 第二个响应头操作:追加X-Custom-Header2 action { modify_response_header_action { action_type = "Append" header_name = "X-Custom-Header2" value = "cdn-custom-value-2" } } # 第三个响应头操作:替换已有X-Cache-Status头 action { modify_response_header_action { action_type = "Replace" header_name = "X-Cache-Status" value = "cdn-processed" } } } }
关键说明
- 每个
action块仅能包含一种类型的操作(如要么是modify_response_header_action,要么是url_redirect_action) - 同类型操作通过拆分到不同
action块,实现和Azure门户中"添加多个同类型操作"完全一致的效果 - 若需配置多个条件,同样可通过在
delivery_rule下添加多个条件块(如request_header_condition)实现
内容的提问来源于stack exchange,提问作者user3715261
相关产品推荐
相关产品推荐

