全部产品
Search
文档中心

边缘安全加速:使用Terraform配置修改入站响应头(源站到ESA)

更新时间:Mar 26, 2026

使用Terraform可以在源站返回至ESA的响应上添加、删除或变更HTTP响应头,例如按请求动态回写CORS头。

安装Terraform并配置权限

在本地安装和配置Terraform

您可以参考安装和配置Terraform,在本地使用Terraform。

  • 由于阿里云账号(主账号)拥有资源的所有权限,其AccessKey一旦泄露风险巨大,所以建议您使用满足最小化权限需求的RAM用户的AccessKey。具体操作方式请参见创建AccessKey

  • 创建环境变量,用于存放身份认证信息。

    AccessKey管理页面上创建和查看您的AccessKey。

    若无对应环境变量,在执行terraform模板时无法确认身份信息,将会导致调用失败。

使用在线服务(免安装和权限配置)

如果您不想安装Terraform,可以直接使用在线服务Cloud Shell

阿里云Cloud Shell是一款帮助您运维的免费产品,预装了Terraform的组件,并配置好身份凭证(Credentials)。因此您可直接在Cloud Shell中运行Terraform的命令。更多信息,请参见使用Terraform快速创建资源

重要

通过Cloud Shell使用Terraform时,由于其销毁特性会导致数据丢失,因此建议您使用Cloud Shell做简单、快速的操作,例如调试。更多使用限制,请参见使用限制

涉及的资源

配置入站响应头修改规则

  1. 创建一个名为 main.tf 的配置文件,然后将以下代码复制到配置文件中,用于为站点创建入站响应头修改规则(源站到ESA)。

    # 1. 查询已有站点信息
    data "alicloud_esa_sites" "default" {
      site_name = "{{DOMAIN}}"  # 替换为您已接入边缘安全加速的站点域名
    }
    
    # 2. 修改入站响应头(源站到边缘安全加速):在匹配 Origin 的请求响应中回写 Access-Control-Allow-Origin
    resource "alicloud_esa_http_incoming_response_header_modification_rule" "example" {
      site_id      = data.alicloud_esa_sites.default.sites[0].site_id
      rule_name    = "cors-mirror-origin-example"
      rule_enable  = "on"
      rule         = "(http.request.headers[\"origin\"] in {\"http://www.example.com\" \"https://www.example.com\" \"http://image.example.com\" \"https://image.example.com\"})"
      response_header_modification {
        operation = "add"
        name      = "Access-Control-Allow-Origin"
        value     = "http.request.headers[\"origin\"]"
        type      = "dynamic"
      }
    }
    
  2. 进入配置文件所在目录,执行如下命令,初始化Terraform环境。

    terraform init
  3. 执行如下命令,验证Terraform语法与配置。

    terraform validate
  4. 执行如下命令,预览执行结果。

    terraform plan
  5. 执行如下命令,执行Terraform脚本。

    terraform apply
  6. 依据提示输入yes确认执行即可。

验证结果

执行 terraform show 命令

您可以在工作目录中,使用以下命令查询 Terraform 已创建资源的详细信息:

terraform show

登录控制台查看

  1. 在ESA控制台选择站点管理,在站点列单击目标站点。

  2. 在左侧导航栏,选择规则 > 转换规则在对应子功能页查看已创建的规则及配置。

(可选)清理资源

当您不再需要上述通过Terraform创建或管理的资源时,请运行terraform destroy命令以释放资源。

terraform destroy

相关参考

response_header_modification.operation 说明

Terraform 的 alicloud_esa_http_incoming_response_header_modification_rule资源中,response_header_modificationoperation 取值如下表所示。

取值

含义

说明

add

添加

新增响应标头。

del

删除

删除指定名称的响应标头。

modify

变更

修改已有响应标头的值。

response_header_modification.type 说明

type 表示标头取值为静态字符串还是动态表达式。

取值

含义

说明

static

静态

value 为固定字符串。

dynamic

动态

value 为表达式,例如引用请求头 http.request.headers["origin"]