全部产品
Search
文档中心

边缘安全加速:使用Terraform配置等候室

更新时间:Apr 03, 2026

使用Terraform可以快速完成等候室配置,通过流量排队机制保护源站免受突发流量冲击。

安装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 的配置文件,然后将以下代码复制到配置文件中,用于配置等候室。

    # 1. 查询企业版 ESA 实例
    data "alicloud_esa_sites" "default" {
      plan_subscribe_type = "enterpriseplan"  # 筛选企业版实例
    }
    
    # 2. 创建站点
    resource "alicloud_esa_site" "resource_Site_example" {
      site_name   = "{{DOMAIN}}"  # 替换为实际域名,如 example.com
      instance_id = data.alicloud_esa_sites.default.sites.0.instance_id
      coverage    = "overseas"  # 海外加速
      access_type = "NS"         # NS 接入方式
    }
    
    # 3. 创建等候室
    resource "alicloud_esa_waiting_room" "default" {
      site_id                        = alicloud_esa_site.resource_Site_example.id
      waiting_room_name              = "waitingroom_example"  # 等候室名称
      description                    = "example"
      status                         = "off"  # 创建后默认关闭,需手动开启
      waiting_room_type              = "default"
    
      # 排队策略配置
      queuing_method                 = "fifo"  # 先进先出排队算法
      session_duration               = "5"    # 会话时长(分钟)
      total_active_users             = "300"  # 最大并发用户数
      new_users_per_minute           = "200"  # 每分钟放行人数
    
      # 匹配规则:触发排队的条件
      host_name_and_path {
        domain    = "sub_domain.com"         # 主域名
        path      = "/example"                # 路径匹配
        subdomain = "example_sub_domain.com."  # 子域名
      }
    
      # 页面显示配置
      language                       = "zhcn"  # 排队页面语言:简体中文
      custom_page_html               = ""      # 空表示使用默认排队页面
      queuing_status_code            = "200"   # 排队时返回的HTTP状态码
      cookie_name                    = "__aliwaitingroom_example"  # Cookie名称
    
      # 高级选项
      queue_all_enable               = "off"  # 是否全员排队
      disable_session_renewal_enable = "off"  # 是否禁用会话续期
      json_response_enable           = "off"  # 是否返回JSON响应
    }
    说明

    请根据实际情况修改代码中的占位符:将 DOMAIN 替换为您的实际域名,将 host_name_and_path 中的域名和路径替换为实际触发排队的条件。关键参数说明请参见本文末尾的相关参考章节。

  2. 进入配置文件所在目录,执行如下命令,初始化Terraform环境。

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

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

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

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

验证结果

执行terraform show命令

在 terraform apply 成功后、清理资源前,可在工作目录执行以下命令核对资源状态。

terraform show

登录控制台查看

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

  2. 在左侧导航栏,选择流量 > 等候室

  3. 在等候室页面可以看到新创建的等候室规则,包括等候室名称、状态、排队策略、会话时长、并发限制等配置信息。

相关参考

本文代码示例中关键参数的说明如下:

参数名称

示例值

说明

plan_subscribe_type

"enterpriseplan"

筛选企业版ESA实例,用于获取可用的实例ID。

site_name

DOMAIN

站点域名。替换为您的实际域名,如 example.com

waiting_room_name

"waitingroom_example"

等候室名称,在控制台显示的标识名称。

status

"off"

等候室运行状态。off 表示关闭,on 表示开启。创建后默认关闭,需手动开启才生效。

queuing_method

"fifo"

排队算法。fifo 表示先进先出,先到的用户先被放行。

session_duration

"5"

会话时长(分钟)。用户获得通行资格后的有效时间,在此期间刷新页面无需重新排队。

total_active_users

"300"

总活跃用户上限。系统允许的最大并发数(包含正在排队和已放行的用户),超过此数新用户进入队列。

new_users_per_minute

"200"

每分钟放行人数。流量整型速率,每分钟最多允许该数量的新用户从队列进入源站,防止源站瞬间过载。

host_name_and_path.domain

"sub_domain.com"

匹配的主域名。只有访问该域名的请求才会触发排队。

host_name_and_path.path

"/example"

匹配的路径。只有访问该路径的请求才会触发排队。

host_name_and_path.subdomain

"example_sub_domain.com."

匹配的子域名。可选配置,用于更精确的匹配条件。

language

"zhcn"

排队页面语言。zhcn 表示简体中文,en 表示英语。

custom_page_html

""

自定义排队页面HTML代码。为空表示使用默认排队页面模板,可填入HTML代码展示品牌化排队页。

queuing_status_code

"200"

用户处于排队状态时返回的HTTP状态码。设为 200 可配合前端实现平滑排队。

cookie_name

"__aliwaitingroom_example"

用于标识用户排队位置和会话状态的Cookie名称。

queue_all_enable

"off"

全员排队开关。off 表示仅在流量超过阈值时触发排队,on 表示所有用户均需排队。

disable_session_renewal_enable

"off"

禁用会话续期开关。off 表示允许用户在会话有效期内刷新页面自动续期,on 表示刷新可能导致重新排队。

json_response_enable

"off"

JSON响应模式。off 表示返回HTML页面,on 表示返回JSON格式排队信息,适用于API接口场景。

不同套餐的支持情况

说明

目前等候室功能仅PremiumEnterprise套餐支持。部分功能需要您在企业版基础上联系我们开通等候室Pro版进行升级或使用。

功能项

Premium

Enterprise

等候室基础功能

支持

支持

等候室数量

1个

默认支持1个,开通等候室Pro版以后可以支持最大10个。

配置多个主机名和路径

不支持

默认支持1个,开通等候室Pro版以后可以支持最大50个。

自定义模板

不支持

开通等候室Pro版以后可以支持。

禁用会话续订

不支持

开通等候室Pro版以后可以支持。

JSON友好响应

不支持

开通等候室Pro版以后可以支持。

自定义队列状态代码

支持

支持

排队方法

仅支持FIFO方式

默认支持FIFO模式,开通等候室Pro版以后支持所有排队方式。

等候室规则

不支持

开通等候室Pro版以后可以支持最大5条。

等候室事件

不支持

开通等候室Pro版以后可以支持最大5个。

SEO爬虫旁路

支持

支持